【发布时间】:2016-07-13 04:55:24
【问题描述】:
我目前正在用 C 语言编写代码,它从整个 ASCII 可用字符中选择符号和数字。 作为程序员的初学者,我通常是这样做的
if ((i > 25 && i < 50) || (i > 100 && i < 200)) { contents }
对于变量i 介于 25~50、100~200(不包括)之间以适应条件。
如果我想设置多个范围,如 32~64(! to @) 和 91~96([ to `) 和 123~126({ to ~) 那么会有更好的(意思是更短或更简单的代码)还是我应该坚持这种方法,像上面的代码一样继续添加每个范围?
【问题讨论】:
-
一个提示,也可以使用 ascii 符号代替数字
-
好吧,我建议你定义一个函数
in_range(int min, int max)并调用这个函数。 -
我通常使用掩码:
if ((chr & mask) == cond)- 它允许选择任何范围:所有奇数符号 (mask = 0x01; cond = 0x01),ASCII table (mask = 0x0F; cond = 0x00) 第一行的所有符号。通过结合这些检查,我可以实现任何过滤器。 -
如果你想要
! to @那么为什么不使用'!'和'@'而不是32 和64?更具可读性和精确性 -
我会将您的代码重写为:
((25 < i && i < 50) || (100 < i && i < 200))。以直观易懂的方式始终如一地编写这种逻辑将减少您的认知负担并使代码更易于阅读。