[英]Why does printf give me the following output?
我正在阅读C 编程语言书,并了解如果我有一行代码,例如:
int c;
printf("%d", c = 5);
我将得到一个 5 的 output,因为 (c = 5) 具有赋值的 RHS 值。
以类似的方式:
int c;
printf("%d", c = getchar(c));
会给我标准输入缓冲区中第一个字符的 integer 值,因为 (c = getchar()) 具有 RHS 的值,即 getchar() function。
我正在玩它并使用 VS Code 使用以下内容:
#include <stdio.h>
int main()
{
int c, b;
printf("%d\t%d", c = (b = 7));
}
我得到的 output 是:
7 6422376。
并不是
7 7
为什么是这样? 无论我对 b 使用什么值,例如 (b = 3),第二个 output 都是相同的值 (6422376)。
表达式c = (b = 7)
是单个表达式,因此将单个参数传递给printf
function。
第二个%d
格式说明符导致未定义的行为,因为没有第二个参数匹配它。
因为对于第二个 %d 没有匹配的参数,因为 c=(b=7) 是单个表达式
您的代码格式不正确:当您应该有两个时,您只有一个 printf 参数。
#include <stdio.h>
int main()
{
int c, b;
printf("%d\t%d", c = (b = 7),b);
}
您可以尝试这些代码来打印 b 的值。 printf function 中只有一个参数和 2 个格式说明符,因此编译器假定另一个 %d 的任何垃圾值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.