C语言中有一道题目 已知 int a 4,b 5,c则

2021-03-10 17:55:33 字数 3668 阅读 8604

1楼:匿名用户

这个涉及到c语言的单目运算符优先级与结合性的知识:

62616964757a686964616fe59b9ee7ad9431333330356165

优先级:

在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。

结合性:

c语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。例如算术运算符的结合性是自左至右,即先左后右。如有表达式x-y+z 则y 应先与“-”号结合,执行x-y 运算,然后再执行+z 的运算。

这种自左至右的结合 方向就称为“左结合性”。而自右至左的结合方向称为“右结合性”。

在你的问题中,"="在表达式中是赋值运算符,而在c语言中,赋值运算符是典型的右结合性运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。

所以,本例就是先计算双目运算符“>”:a>b,因为a=4,b=5,a是小于b的,所以式子计算就变成了c = a = 0,然后再计算a = 0(即a = (a > b)),最后式子就是c = 0, 所以答案选a

具体运算符优先级和结核性请参考:

http://wenku.baidu.***/view/044cc58a6529647d27285242.html

2楼:0冷雨

答案是a;因为a=a>b意思为把波尔值a>b赋值给a,因为a大于b,a>b等于0,所以a为0.望采纳~

3楼:匿名用户

a, a=0

= 是由du右向zhi左运算的,

a>b值为daofalse,值为0

所以c=a=0

另外也可以专写程序属验证:

#include

int main(void)

在c语言中,若有定义:int a=8,b=5,c;执行语句c=a/b+0.4;后,c的值为多少?

4楼:假面

c=1,因为a/b默认来

是取整计算源!即5/8=1,c=1+0.4=1。计算过程中bai小数点之后的全部舍去

du。不是按四舍五入计算!

zhiint类型dao在内存中占用了4个字节,也就是32位。int类型是有符号的,因此,32位并不会全部用来存储数据,使用最高位来存储符号,最高位是0,提示数据是正数,最高位是1,表示数据是负数,使用其他的31位来存储数据。

5楼:卯丹司马寄真

首先a/b=1.6,但是因为为整型,所以取1,然后1+0.4=1.4由于同样的原因值为1

所以c=1;

6楼:安迪军团雷

int函数 ,将数字向下舍入到最接近的整数,即取不大于自变量的最大整数。a/b=1,c=1+0.4,c的值为1.

已知int a=5,b=4,c=6,d;,执行语句d=a>b?(a>c?a:c):b后,d的值为________。 具体过程 15

7楼:匿名用户

6首先运行的肯定是括号里的 a>c?a:c如果a大于c的话 结果为 a,

反之则为c, 所以结果是c

然后运行的是 a>b?c:b;

同上 所以结果为6

8楼:¤工藤星一

d的值为6

“条件?语句1:语句2”执行过程:

判断条件是否正确,如果正确,则执行语句1,否专则执行语句2首先执行“属a>c?a:c”,4<6,所以返回6则语句变成“d=a>b?

6:b;”

5>4,返回6

所以d的值为6

ps:“d=a>b?(a>c?a:c):b”的后面要加“;”

ps:你可以上机调试

**:#include "stdio.h"

void main()

9楼:匿名用户

a>c?a:c 这个结果是c

a>b?c:b 这个结果还是c

d=cd为六。

c语言环境中,设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为( )

10楼:lovefree随风

表达式:a>b?a:c>d?a:d的结果为4。

解析:1、由于c语言的相同优先级运算符运算规则为从左至右依次运算,而条件运算符具有右结合性,所以表达式:a>b?

a:c>d?a:

d优先运算c>d?a:d,得出的结果为4;

2、再运输a>b?a:4,得出的结果为4。

所以最终得出的结果为4。

扩展资料表达式为:表达式1?表达式2:表达式3

先求解表达式1,

若其值为真(非0)则将表达式2的值作为整个表达式的取值,否则(表达式1的值为0)将表达式3的值作为整个表达式的取值。

例如:1、max=(a>b)?a:b,就是将a和b二者中较大的一个赋给max。

2、min=(a条件运算符具有右结合性

当一个表达式中出现多个条件运算符时,应该将位于最右边的问号与离它最近的冒号配对,并按这一原则正确区分各条件运算符的运算对象。例如:

11楼:匿名用户

结果是4,一会写出过程

“?:"这是一个三目运算符,以“c>d?a:

d”这个**为例,程序会首先判断“c>d”是否为真,若为真则执行冒号前的语句,即其结果为”a“的值;若为假,则执行冒号后的语句,即其值为"d"的值。

一般遇到这样的题要拆分着做,首先判断最左边的“a>b”,这个结果为假,根据条件判断运算符的性质,所以接下来执行第一个冒号后的语句“c>d?a:d”,接着判断“c>d”,结果为假,所以最终取值为第二个冒号后的值,即为d的值,也就是4。

12楼:匿名用户

答案为4,“a?b:c”是从右向左执行的,也就是说a为真的话,这个式子就可以看做b,否则可以看做c;c大于d么,不是,则变成了a>b?

a:d,a大于b么,不是,则为d,d=4.

13楼:匿名用户

答案是4.三目运算符就可求得

c语言题目 如果 int a=3,b=4:则条件表达式“a<b?a:b“的值是 a)1 b)4 c)4,333333 d)1

14楼:匿名用户

inta=3,b=4;

x=(a<dub?a:b)//如题意,要求x的值zhi。三目运算符

dao《表达式专1>?《表达式2>:《表达式3>中,//如果表属达式1成立,

结果选择表达式2,不成立,选择表达式3.因为3<4成立,所以,选表达2的结果

///即,答案是a的值:3

15楼:想请教你们哈

先判断式 a < b 是否成立:现在 a=3,b=4,所以判断式 a<b 成立,而条件表达式“a<b?a:

b“ 的值应该是 a,也就是 3。但题目提供的可选的值没有 3 !

可见,题目有错!

16楼:匿名用户

3<4 成立,所以 返回 a ,因此结果是3

17楼:海鸭

答案是3,好像没得选啊

一道c语言的题目,求大神解答,一道C语言的题目,求大神解答。 5

1楼 云中鹤隐 while scanf d n 是什么 2楼 心河星尘 你忘记将每次循环前将sum清零了。还有格式等等问题。改法是 include int main sum 0 for b 0 b printf 2f n sum n return 0 3楼 匿名用户 include int main...