这是我的程序..
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");
}
首先 printf() 为什么它打印 1 作为输出,尽管我传递了一个空字符串?
在第一个 if-else 语句中,我得到了正确的输出 -> 是预期的,但是在第二个 if-else 语句中它打印输出 -> 不,谁能解释一下为什么会发生这种情况?
我的输出是..
1
是的
不
提前致谢 :-)
最佳答案
C 中的所有字符串都以 \0
空字符结尾。这表示刺结束。
当用 C 编程时,可视化数据实际上如何存储在内存中总是很好的,正如你在这里看到的,“Hello”有 5 个字符长,但是必须给 char 数组提供 6 个字符,以便为这个空字符留出空间。
以下是 Bob Jarvis 建议的示例:
至于 sizeof("") > -2
是假的,看看 sepp2k 的回答
关于c - C 编程中的 sizeof() 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61561870/