楼上举出了一个错误的例子。(a++)+(a++)这个例子是错误的。C语言规定,在相邻的运算中不能连续多次改变同一个变量的值,上面的式子显然不符合这一点。当然,我并不是说上面的式子编译不通过,而是说上面的式子是ANSI标准中定义为不合法的形式。这个式子在C语言标准中没有给出标准的运算法则,但是在语法上又没有错误,因此不同的编译器会进行不同的解释,其结果也就不一样。我给出两种编译器的解释,假设a的初始值为1。1、(a++)+(a++)=3 理由 编译器会认为第一次(a++)为1,第二次(a++)为2,因此结果为3。2、(a++)+(a++)=4 理由 有些编译器会认为这是两个相同变量相加,于是就会取第二个a++的值作为变量值,也就是先执行两次a++将第二次的值(2)作为编译器所认为的相同变量的值,也就是2+2,因此结果为4。因此,像这种同一个变量连续自增的表达式是不符合规范的,也是标准程序开发中不可用的(在这里鄙视一下谭浩强的书)。 下面我来简单解释一下自增运算。首先在C语言里有一个概念,那就是“表达式的值”。在大多数情况下,按照运算优先级进行的运算结果就是表达式的值。有个很明显的特例,那便是后置自增运算。将a++看作一个表达式,那么a++的表达式的值就是1(假定a的初始值为1),而a=2再比如1<2这个表达,表达式的值为非0(一般说法是1,但是C语言对“真”的表述为非0)。因此,要理解C语言中表达式的值和变量的计算结果就会理解自增运算了。从编译原理角度来说这是由于堆栈的特点导致的,如果你将来会对C语言进行深入的学习会理解的
你好:
根据例题我简单说明一下。首先c的值,a++表示先使用a的值在加1,所以此处a值为5,--b表示先使b的值减1,所以此处b是3,记住++或者--在变量前面的话是先改变变量的值然后在使用,记住++或者--在变量后面的话是先使用变量的值,使用变量过后在改变变量的值,所以c的值为1(因为是整除),此时a的值在上面已经发生了改变变成了6,所以d的值为2。希望对你有帮助,谢谢
C语言中求绝对值的函数有两个:abs()和fabs()。
1、abs() 是用来求整型表达式的绝对值,比如:abs(x) 就是求整型变量x的绝对值。
2、fabs() 是用来求浮点型表达式的绝对值,比如:abs(x) 就是求浮点型变量(float型或double型)x的绝对值。
扩展资料
函数调用的一般形式为
函数名(实参表列);
如果是调用无参函数,则"实参表列"可以没有,但括弧不能省略。如果实参表列包含多个实参,则个参数间用逗号隔开。实参与形参的个数应相等,类型应一致。
实参与形参按顺序对应,一一传递数据。但应说明,如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序
方式
按函数在程序中出现的位置来分,可以有以下三种函数调用方式:
函数语句
把函数调用作为一个语句。
printstar();
这时不要求函数带回值,只要求函数完成一定的 *** 作。
函数表达式
函数出现在一个表达式中,这种表达式称为函数表达式。这时要求函数带回一个确定的值以参加表达式的运算。
函数参数
函数调用作为一个函数的参数,实质上也是函数表达式形式调用的一种,因为函数的参数本来就要求是表达式形式。
参考资料:
C语言中,算术运算符“%”代表模(取余)运算,“++”代表变量自增运算,“--”代表变量自减运算。
1、模运算“%”
“模”是“Mod”的音译,模运算多应用于程序编写中。 Mod的含义为求余。模运算在数论和程序设计中都有着广泛的应用,从奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。
C语言用“%”代表模运算,例如7%2=1、8%5=3等。
2、自增运算“++”
C语言用“++”代表自增运算,分为前缀自增和后缀自增,其效果均为自身变量值+1。前缀自增例如“a=5;b=++a;”,则运行结果是“a=6,b=6”。后缀自增例如“a=5;b=a++;”,则运行结果是“a=6,b=5”。
3、自减运算“--”
C语言用“--”代表自减运算,分为前缀自减和后缀自减,其效果均为自身变量值-1。前缀自减例如“a=5;b=--a;”,则运行结果是“a=4,b=4”。后缀自减例如“a=5;b=a--;”,则运行结果是“a=4,b=5”。
要点1: =,+=,-=,%= 等符号的应用是同道理的: 即把左边的移过右边运算(右边用括号包住,表示先运算),结果再给左边(注意左边只能是变量,不可为表达式)A += B 等价于A = A + (B); (B可以是值或表达式,这里的=仍是赋值号哦,B打括号是因为它可以是表达式) 如 x += 1; ===== x= x+1; x += 1+2+3; ===== x =x+(1+2+3); x += a+b+1 ==== x= x+(a+b+1); 要点2:就个这样的符号的运算,则从最右边的那个开始计算,一直到左边例如: A += B %= A -= B--------------3------2----1 (3个这样的符号)从最右边来分析(按符号顺序): 1: A=A-(B) ,得到了A的新值 2:B = B%(A), 得到了B的新值 (注意该A是新值哦) 3: A=A+(B), 再次得到了A的新值 (注意右边的A也是1的新值,B是2的新值) 懂了上面,你应该可以分析自己的了~~~
以上就是关于关于c语言中的a++ ,++b的运算全部的内容,包括:关于c语言中的a++ ,++b的运算、C++或C语言中 的算数运算符++或- - 的运算、C语言有没有绝对值运算等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)