可以初始化临时字符串以保持条件语句的可读性吗? 这适用于任何语言,但现在,让我们来看C++。假设我们有两个必须采用十六进制值的字符: char b, t; do { //some code } while(((b<'0' || b>'9') && (b<'A' || b>'F')) || ((t<'0' || t>'9') && (t<'A' || t>'F')));
代码看起来仍然很混乱,但至少我们可以理解发生了什么:初始化两个字符串以查看其中是否有十六进制字符 假设性能没有差异,第二种解决方案是否比第一种更好,或者是否有其他方法可以在不增加代码膨胀的情况下查看字符是否包含十六进制值可以初始化临时字符串以保持条件语句的可读性吗? 这适用于任何语言,但现在,让我们来看C++。假设我们有两个必须采用十六进制值的字符: char b, t; do { //some code } while(((b<'0' || b>'9') && (b<'A' || b>'F')) || ((t<'0' || t>'9') && (t<'A' || t>'F')));,c++,string,char,hex,conditional-statements,C++,String,Char,Hex,Conditional Statements,代码看起来仍然很混乱,但至少我们可以理解发生了什么:初始化两个字符串以查看其中是否有十六进制字符 假设性能没有差异,第二种解决方案是否比第一种更好,或者是否有其他方法可以在不增加代码膨胀的情况下查看字符是否包含十六进制值 如果需要,可以在循环中将chars的大小写更改为ALLCAPS或小写(当前为ALLCAPS)。我想您正在查找。我想您正在查找。即使std::isxdigit不存在,在这种情况下,正确的做法是编写一个执行该检查的函数while(somefunc(b)| | somefunc(t)
如果需要,可以在循环中将chars的大小写更改为ALLCAPS或小写(当前为ALLCAPS)。我想您正在查找。我想您正在查找。即使
std::isxdigit
不存在,在这种情况下,正确的做法是编写一个执行该检查的函数<代码>while(somefunc(b)| | somefunc(t))比这两个选项中的任何一个都要好。我想说的是,代码的清晰性应该总是优先于性能。在大多数程序中,大部分时间都花在执行代码的一小部分上,程序员往往很难猜出这些代码是哪一部分(随着编译器在优化代码方面做得更好,这一点只会变得更糟)。在我自己的工作中,我只是在运行代码时才开始担心代码性能,看到它太慢,然后运行探查器来确定代码的哪个部分花费了这么长的时间。即使std::isxdigit
不存在,在这种情况下正确的做法是编写一个执行该检查的函数<代码>while(somefunc(b)| | somefunc(t))比这两个选项中的任何一个都要好。我想说的是,代码的清晰性应该总是优先于性能。在大多数程序中,大部分时间都花在执行代码的一小部分上,程序员往往很难猜出这些代码是哪一部分(随着编译器在优化代码方面做得更好,这一点只会变得更糟)。在我自己的工作中,我只是在运行代码时才开始担心代码性能,看到它太慢,然后运行探查器来确定代码的哪个部分花费了这么长的时间。太棒了。我从来不知道有这么好的功能。太棒了。我从来不知道有这么好的功能。
char b, t;
do {
//some code
} while(string(1,b).find_first_of("0123456789ABCDEF")==-1 || string(1,t).find_first_of("0123456789ABCDEF")==-1);