san*_*136 4 c sizeof string-literals implicit-conversion
这是我的程序..
int main(void) {
printf("%lu\n", sizeof(""));
// first if else statement
if(1 > -2) printf("Yes");
else printf("No");
printf("\n");
// second if else statement
if( sizeof("") > -2) printf("Yes");
else printf("No");
}
Run Code Online (Sandbox Code Playgroud)
首先 printf() 为什么它打印 1 作为输出,尽管我传递了一个空字符串?在第一个 if-else 语句中,我得到了正确的输出 -> 是预期的,但是在第二个 if-else 语句中它打印输出 -> 不,谁能解释一下为什么会发生这种情况?
我的输出是.. 1 是 否
提前致谢 :-)
sizeof("")是一种,因为字符串文字表示包含给定字符后跟 '\0' 的字符数组。所以""代表字符数组{'\0'}。
sizeof("") > -2为 false 因为sizeof返回 a size_t,它是一个无符号整数类型。比较导致-2转换为size_t,这导致它环绕并成为一个比 1 大得多的数字。
| 归档时间: |
|
| 查看次数: |
84 次 |
| 最近记录: |