【发布时间】:2017-05-16 01:31:53
【问题描述】:
我对编码还很陌生,并且对我最近遇到的程序的输出有疑问。代码如下:
#include <stdio.h>
int main(void) {
unsigned char x = 16;
x = x * 16;
if (x) {
printf("True.\n");
}
else {
printf("False.\n");
}
return 0;
}
这个程序的输出显然是“False.\n”。我对此有两个问题:
- 如果条件语句的参数只是一个变量,这意味着什么?
- 为什么输出是“False.\n”?
谢谢!非常感谢任何建议或提示。
【问题讨论】:
-
请阅读任何基本的 C 书籍或教程。这些是 C 基础知识比 Stackoverflow 更好的资源。但总而言之,0 在 C 中是假的,其他任何东西都是真的。结果为假,因为
16*16溢出了char,因此结果为0。 -
@kaylum 它是
unsigned char。并且超出范围的赋值(不溢出)作为*的操作数被提升为int。 -
if statement integer的可能重复
-
试试
printf("%d\n", (int)x);你会发现它打印0。
标签: c if-statement output