程序说明:a为6,动态输入b(值为3),c=a÷b,求c,为何调换一下表达式的位置,结果会不同。
正确程序如下:
float a=6;
float b;
float c;
printf("Enter b:");
scanf("%f",&b);
c=a/b;
printf("\nc=%f",c);
调换表达式c=a/b顺序后无法得出正确结果的程序如下
float a=6;
float b;
float c;
c=a/b;
printf("Enter b:");
scanf("%f",&b);
printf("\nc=%f",c);
我想知道为什么把c=a/b调到scanf函数前面,就无法计算出正确结果?希望能从具体过程详细说明,先谢过每位回答者。
c语言赋值运算中哪种优先级最高?
c语言运算符优先级从高到低的顺序依次如下:优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。表达式的结合次序取决于表达式中各种运算符的优先级。优先级高的运算符先结合,优先级低的运算符后结合,同一行中的运算符的优先级相同。优先级与求值顺序无关。如a+b && b...
C语言中算术运算符优先级的问题
&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。赋值表达式则规定先对右边的表达式求值...
c语言中,计算的顺序是从哪向哪?
在C语言中,表达式的计算顺序是由运算符的优先级和结合性决定的。以下是C语言中一些常用运算符的优先级(从高到低):后缀运算符:++、-- 一元运算符:++、--、+、-、*、\/、%、&、|、^、~、!乘性运算符:*、\/ 加性运算符:+、- 移位运算符:<<、>> 关系运算符:<、>、<=、>= 相等...
C语言逻辑表达式问题
由于||和&&具有短路求值的特点,所以计算顺序是:1. 先算a,如果a非0,则后面的表达式不用算了,整个表达式直接为1 2. a为0,则仍需计算后面的表达式,先计算b+c 3. 如果b+c为0,则后面的b-c不用计算了,整个表达式直接为0 4.b+c不为0,再计算b-c。
c语言表达式的顺序怎样?
4、计算 0 + c,结果为 5 5、计算 5 -1,结果为 4。6、计算 b + 2 或者 b + 2.5,结果为 6 或者 6.5。7、计算 4 && 6 后者 4 && 6.5,因为两边都为非零值,所以结果为 1,或者true。这里主要是一个运算符优先级的问题,在本表达多中。小括号的优先级最高,所以最先计算...
C语言 表达式求值
a+=a-=a*=a 从右往左看 a *= a ; \/\/即 a = 3*3 此时a 的值为9 a -= (a*=a) ; \/\/即 a -= a ,即 a = 9 - 9 ,此时a的值为0 a += (a-=a*=a) ;\/\/ 即 a =+ a ,即 a = 0+0 ,此时a的值还是0 ...
关于c语言表达式
序列表达式(z=0, (x=2)||(z=1), z)求值时,顺序计算z=0、(x=2)||(z=1)、z三个子表达式(操作数),值等于最后一个子表达式的值。表达式z=0计算后,z的值为0。表达式z=0的值为0。表达式(x=2)||(z=1)计算时,先计算子表达式x=2。由于作为||运算符的左操作数,x=2的值为2而...
C语言题目,求解运算顺序
1、printf函数是从左往右读取,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所有我们看见的结果是,从右边开始处理的 2、逗号运算符:在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。3、++,--运算符:放在...
C语言 实参数求值问题
表达式的值是从左向右的,但是是把所有的表达式都计算完了以后才传值的。当 f(i, i++) 时,因为 ++ 是后缀运算,所以程序先把两个 i 值传入函数,然后 i 再自增就和 f 函数没有什么关系了。当 f(i, ++i) 时,因为 ++ 是前缀运算,所以程序先计算自增,虽然在计算左边参数的 i 时,i...
C语言中表达式1 | | (表达式2) &&表达式3 为什么先执行表达式1?
按照C语言优先级, A || B && C相当于A || (B && C), 所以你可能默认了先执行B && C.但是需要注意C语言的标准采用逻辑表达式短路求值: 对于d=X||Y, 如果X成立则不执行Y而直接得到d=1; 对于d=X&&Y若X不成立同样跳过Y直接得到d=0.在你的例子里 A || (B && C) 先得到了A成立, ...