C++问题~比较两个数大小

2025-05-14 11:04:44
推荐回答(1个)
回答1:

在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 即可。(楼主应该明白编程语言中的函数和数学上的函数是两个概念吧。若不理解,之后老师讲课或是自习中会慢慢理解掌握的。学习编程需要耐心,只要一步一步来就可以了。)