|
|
1
29
价值
正如你所期望的那样。这里的关键点是,比较是用
|
|
|
2
4
|
|
|
3
2
第一次比较时,它强制转换为int,因为0xFF仍然被视为int,这意味着您的字符是-128到127,但0xFF仍然是255。 在第二种情况下,您告诉它0xFF实际上是一个有符号字符,而不是int |
|
4
1
0xff将被视为一个整数常量,其值为255。你应该经常注意不同类型之间的这种比较。如果要确保编译器将生成正确的代码,应使用类型转换: if( *p == (signed char)0xFF ) break; 无论如何 当心 下一个声明将 以同样的方式工作: if( (int)*p == 0xFF ) break; 另外,最好避免使用带符号的字符,或者,您必须使用带符号的字符,以便将它们与带符号的值进行比较,例如在本例中为-1: if( *p == -1 ) break;
char a=0xff; char b=-1; if(a==b) break; |
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |