lz你好
修改代码如下:
#include
#include
int main()
{
int a,b;
printf("请输入两个数:\n");
scanf("%d,%d",&a,&b);
if(a>b)
{
printf("%d > %d\n",a,b);
}
else if(a==b)//c语言中=是赋值的意思 ==才是等于的意思 注意了哟
{
printf("%d = %d\n",a,b);
}
else
{
printf("%d < %d\n",a,b);
}
//printf("Sorry,有个BUG\n"); 这条语句没什么用吧 建议去掉
system("pause");
return 0;
}
再有一点就是:
我们最好是使用
if()
……
else if()
……
else
这样的语句更显条理性、逻辑性
希望能帮助你哈
下面两位都没说完,我测了一下,你那个程序再输入数据时,那儿也不对,你要把那个("%d,%d中间的逗号也删了,不然仍然会输出一个地址,你可以试一下,练一下调试能力
第二个问题就是下面两位说的a==b
等着你那20悬赏呀
#include
#include
int main()
{
int a,b;
printf("请输入两个数\n");
scanf("%d,%d",&a,&b);
if(a>b){
printf("%d > %d\n",a,b);
}
if(a==b) {printf("%d = %d\n",a,b);//(如果是=的话,会返回一个“真”值,并将a赋值为1)
}
if(a }
printf("Sorry,有个BUG\n");
system("pause");
return 0;
}
在c/c++中, = 是赋值的意思,作用是将=右边的值赋给左边的变量。而且该表达式会返回这个变量被赋值后的值。
举个例子:
int a,b;
b=(a=5);//先进行a=5的操作,将5这个值赋给a这个变量,而且a=5这个表达式又返回了a的值,此时a的值为5,所以a=5这个表达式的值为5。因为b=(a=5),表达式a=5的值(即5)赋给了b。所以b的值也为5。
所以楼主的这句代码
if(a=b) {printf("%d = %d\n",a,b);}
的意思是:将b的值赋给a,并且a=b这句表达式的值为a的值(也为b的值)。在c/c++中,任何非0的值转化为bool型都表示true,只有0会转为false。所以如果b的值不为0,则表达式a=b的值也不为0,则判断成立,执行花括号中的语句;否则不成立,跳过花括号中的语句。
这显然不合该程序的想法。
在c/c++中,判断两者是否相等的运算符是==(即两个等号)。a==b:若a、b值相等,则该表达式值为1(即true),否则为0(fause)。
楼主需要注意,程序语言和数学语言是不太一样的,将两者搞混对初学者来说是经常犯的错误,这需要平时多练习,养成检查代码的好习惯,慢慢就会理解程序的语言,并熟练掌握之。
另外还有一点,倒数第三行中的system("pause")调用了system()函数,而这个函数是在头文件windows.h中的。因此要调用该函数,需要包含该头文件,在代码最前面打上#include