我是相当新的编码,并有一个关于我最近遇到的程序的输出的问题。这里的代码:变量作为参数为if()
#include <stdio.h>
int main(void) {
unsigned char x = 16;
x = x * 16;
if (x) {
printf("True.\n");
}
else {
printf("False.\n");
}
return 0;
}
这个程序的输出显然是“假。\ n”。我有两个问题:
- 如果条件语句的参数只是一个变量,这是什么意思?
- 为什么输出“False。\ n”?
谢谢!任何建议或提示的话,不胜感激。
请阅读任何基本的C书或教程。对于C基础知识,这些是比Stackoverflow更好的资源。但是总而言之,C中的0是错误的,其他都是真的。结果是错误的,因为'16 * 16'溢出了'char',因此结果为0. – kaylum
@kaylum它是'unsigned char'。而作为'*'的操作数被提升为'int'的超范围赋值(不溢出)。 –
[if语句整数]可能重复(http://stackoverflow.com/questions/14646718/if-statement-integer) – Dukeling