a==1?1:2在c语言中是什么意思?

 我来答
才平凡l
2019-10-12 · TA获得超过3115个赞
知道答主
回答量:0
采纳率:0%
帮助的人:0
展开全部

a==1?1:2在c语言中的意思是说如果a等于1是成立的话,那么a的结果就是为1,但是如果a等于1的等式不成立的时候,那么a的结果就为2。

这样的式子在C语言中,属于关系运算符中的三目运算符,三目运算符就是当等式成立结果为?后面的值,当不成立时,选择:后的值。等式?条件1:条件2。

扩展资料

分类和级别:

C语言的运算符主要用于构成表达式,同一个符号在不同的表达式中,其作用并不一致。下面按计算的优先顺序,分别说明不同作用的表达式。需要特别指出,在C语言标准中,并没有结合性的说法。

相同优先级运算符,从左至右依次运算。注意后缀运算优先级高于前缀。因此++i++应解释为++(i++)。

而与或非的运算优先级都不一样,因此a && b || b && c解释为(a && b) || (b && c)

合理使用优先级可以极大简化表达式。

基本表达式 1级

基本表达式,主要是用于运算符之间,做为运算数。

标识,常量,字符串文字量,优先级提升表达式最优先执行。

优先级提升表达式是指圆括号包围的表达式。

后缀表达式 2级

postfix-expression [ expression ],数组下标运算。

postfix-expression ( argument-expression-list),函数调用,括号内的参数可选。

postfix-expression . identifier,成员访问。

postfix-expression -> identifier,成员访问,->号之前应为指针。

postfix-expression ++,后缀自增。

postfix-expression --,后缀自减。

单目/一元运算 3级

++ unary-expression 前缀自增。

-- unary-expression 前缀自减。

unary-operator cast-expression 单目转型表达式, 包括 取地址& ,提领 * , 正号+ ,负号- 位反~ 逻辑否。

sizeof unary-expression 求类型长度,对表达式求类型长度。

sizeof ( type-name ) 求类型长度。

强制类型表达式 4级

( type-name ) cast-expression,强制表达式成为type-name指定的类型。

乘法表达式 5级

“ * ” 乘法运算符;“ / ”除法运算符;“ % ” 取余运算符。

加法运算符 6级

“ + ”加法运算符;“ - ”减法运算符。

移位运算符 7级

<< 左移运算符;>> 右移运算符。

关系运算符 8级

<、<=、>、>=关系运算符。

相等运算符 9级

“ == ”等于运算符;“ != ”不等于运算符。

位与运算符 10级

“ & ”按位与运算符。

位异或运算符 11级

“ ∧ ”按位异或运算符(Bitwise exclusive OR operator)。

位或运算符 12 级

“ | ”按位或运算符(Bitwise inclusive OR operator)。

逻辑与运算符 13级

“&&”逻辑与运算符。

逻辑或运算符 14 级

“ || ”逻辑或运算符。

三元条件运算符 15级

? :条件运算符。

赋值运算符 16 级

=、 +=、 -=、 *=、 /=、 %=、 &=、 ^=、 |=、 <<=、 >>=赋值运算符。

逗号运算符 17级

“,”逗号运算符。

优先级:

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

结合性:

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

而自右至左的结合方向称为“右结合性”。最典型的右结合 性运算符是赋值运算符。如x=y=z,由于“=”的右结合性,应先执行y=z 再执行x=(y=z)运算。C语言运算符中有不少为右结合性,应注意区别,以避免理解错误。

优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。

所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。

具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。

其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。

另外在C语言里,没有前置后置之分,因为++ -- 是右结合所以右侧优先运算,表现为 "操作数后置优先级比较高" 的假象,前置和后置的区分是因为运算符重载而后加入C++的,接下来是算术运算符,*、/、%的优先级当然比+、-高了。

移位运算符紧随其后。

其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。

所有的逻辑操作符都具有不同的优先级(单目运算符除外,!和~)

逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。

跟在其后的&&比||高。

接下来的是条件运算符,赋值运算符及逗号运算符。

在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。

&&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。

在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。

赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6,成为可能。

参考资料来自:百度百科-C语言运算





郭菲菲694168
推荐于2017-12-15 · 超过16用户采纳过TA的回答
知道答主
回答量:60
采纳率:0%
帮助的人:23.5万
展开全部
这是个三目运算符,是C中独有的运算符,如果a=1,则表达式的值为1,如果a不等于1.则表达式的值为2
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
滕濯qA
2011-12-03 · TA获得超过131个赞
知道小有建树答主
回答量:131
采纳率:0%
帮助的人:127万
展开全部
符号==是比较运算符
?:;表示当?前的语句成立就返回冒号前的数,否则返回冒号后面的数:
你的语句的意思是判断a是否与1相等
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
luchuanbaker
2011-12-03 · TA获得超过2041个赞
知道大有可为答主
回答量:2604
采纳率:83%
帮助的人:1156万
展开全部
三目运算符。
如果a等于1表达式的值为1,否则表达式的值为2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
郝在益
2011-12-03 · TA获得超过2079个赞
知道小有建树答主
回答量:1496
采纳率:54%
帮助的人:615万
展开全部
如果a等于1,则其值为1,不然,其值为2.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式