使用%d和字符扫描整数使用%d:意外的结果
我无法给出下面的代码输出的正确原因。有谁能够帮助我。使用%d和字符扫描整数使用%d:意外的结果
int main() {
int i;
char ch;
scanf("%c",&i);
scanf("%d",&ch);
printf("%d\n%c",i,ch);
return 0;
}
输入输出:
input: a
45
output:
0
-
回答:
您正在阅读的int
成char
。假设sizeof(int) != sizeof(char)
,这将导致scanf
超出ch
的末尾,导致未定义的后果。
您应该使用%i
格式说明符int
参数和%c
为char
参数
int main() {
int i;
char ch;
scanf("%c",&ch);
scanf("%d",&i);
printf("%d\n%c",i,ch);
return 0;
}
回答:
这是Undefined behavior。您正试图通过告知弹出,推动不同的东西来迷惑编译器究竟它应该分别在printf
和scanf
声明中。
回答:
不要骗到scanf
或printf
。没有什么比这更好的了。
在这种情况下,您试图将4个字节填充到1的空格中 - 无论您挤压多少,这显然不起作用。你的程序不会崩溃的事实纯属运气。
以上是 使用%d和字符扫描整数使用%d:意外的结果 的全部内容, 来源链接: utcz.com/qa/257365.html