使用%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

-

回答:

您正在阅读的intchar。假设sizeof(int) != sizeof(char),这将导致scanf超出ch的末尾,导致未定义的后果。

您应该使用%i格式说明符int参数和%cchar参数

int main() 

{

int i;

char ch;

scanf("%c",&ch);

scanf("%d",&i);

printf("%d\n%c",i,ch);

return 0;

}

回答:

这是Undefined behavior。您正试图通过告知弹出,推动不同的东西来迷惑编译器究竟它应该分别在printfscanf声明中。

回答:

不要骗到scanfprintf。没有什么比这更好的了。

在这种情况下,您试图将4个字节填充到1的空格中 - 无论您挤压多少,这显然不起作用。你的程序不会崩溃的事实纯属运气。

以上是 使用%d和字符扫描整数使用%d:意外的结果 的全部内容, 来源链接: utcz.com/qa/257365.html

回到顶部