gpt4 book ai didi

c - 为什么要定义 'x' int (C)

转载 作者:太空宇宙 更新时间:2023-11-04 07:24:02 24 4
gpt4 key购买 nike

我有一个问题。当我声明“x”整数时,程序正常运行,但当我删除那个“x”时,它显示了一个奇怪的结果。

 #include <stdio.h>
#include <conio.h>
main ()
{
int a,b,x;
char ras;
printf("Insert a: ");
scanf("%d", &a);
printf("Insert b: ");
scanf("%d", &b);
printf("Sum or multuply: (s/m)");
scanf("%s", &ras);
if (ras=='s')
{
printf("Sum is :%d", a+b);
}
else if (ras=='m')
{
printf("Multiply is :%d", a*b);
}
getch();
}

最佳答案

您的程序以任何一种方式调用未定义的行为,因为 scanf 存储两个字符(输入的字母加上尾随的 0 字节),但是您给它的指针指向一个只能包含单个字符的变量性格。

在您的特定实现中,如果该变量存在,0 字节将简单地覆盖 x 变量。如果不是,您会覆盖其他内容,从而导致奇怪的结果。

要读取单个字符,您应该使用%c,而不是%s

关于c - 为什么要定义 'x' int (C),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19621793/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com