c语言中a%2=1与a%2==1的区别,用法。谢谢! C语言中a&2与 a%2一样吗?

作者&投稿:才秋 (若有异议请与网页底部的电邮联系)

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语言运算







a%2=1这个不规范,a%2==1是判断a除2的余数是否等于1

= 是赋值运算,a%2=1 这句代码有问题额,
==是关系比较符,判断符号两端是否相等,该式的返回值是bool类型,也就是true或者false .

= 是赋值符号,将后面的1赋值给前面的变量,a%2=1 估计编译不过吧
== 比较左右两边的值是否相等。

a%2=1在C中是错误的,=是赋值号,那赋值号左边必须是变量,
而a%2==1它是一个关系表达式,==用来判断两边对像是否相等,也就是说看a%2是否和1恒相等

我不明白c语言中if (a%2==1)是什么意思?~

%是求模运算,求的是除法运算的余数
偶数因为能被2整数,余数是0,奇数%2得到1
变量a存放的数如果与2求模,就是计算除以2的余数是0,表明能被2整数,则a中存放的数为偶数

if(a&2!=0&&(ch>='a'&&ch<='z'))
执行顺序是其实是
if(a&(2!=0)&&(ch>='a'&&ch<='z'))而不是
if((a&2)!=0&&(ch>='a'&&ch<='z'))
所以当a为奇数是if条件成立,偶数时不成立

所以和if(a%2!=0&&(ch>='a'&&ch<='z'))一样

C语言中a&2与 a%2一样吗?
答:if(a&2!=0&&(ch>='a'&&ch<='z'))执行顺序是其实是 if(a&(2!=0)&&(ch>='a'&&ch<='z'))而不是 if((a&2)!=0&&(ch>='a'&&ch<='z'))所以当a为奇数是if条件成立,偶数时不成立 所以和if(a%2!=0&&(ch>='a'&&ch<='z'))一样 ...

a[i]%2!=0 和a[i]%2==1 有何区别
答:我觉得当a[i]>=1时没什么区别 当a[i]=0时,就没区别了

a==1?1:2在c语言中是什么意思?
答:推荐于2017-12-15 10:15:16 最佳答案 这是个三目运算符,是C中独有的运算符,如果a=1,则表达式的值为1,如果a不等于1.则表达式的值为2 本回答由提问者推荐 举报| 答案纠错 | 评论(1) 3 1 郭菲菲694168 采纳率:25% 擅长: 青春期 C/C++ 数据库DB 其他编程语言 ...

c语言中if(j%2=1)是什么意思
答:这个if(j%2=1)应该是有问题的这里面少了一个= 应该为if(j%2==1) ==符号是比较的意思。是取余运算符。a%b的值为a除以b的余数。

C语言中:&= 与等于, |=或等于,这两个表达式表示啥意思呢?
答:答案:a&=b; == a=a&b;a|=b; == a=a|b;运算说明:1、op=的运算符是C语言中一大类运算符,所有的op=形式运算符,写作a op= b时,均等效于a=a op b;2、几乎所有的双目运算符,均有和赋值合并的op=运算符,包括+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=等;3、使用op=运算...

c语言中i%2是什么意思
答:a%b是a除以b的余数,i%2就是i除以2的余数,当除以2的时候一般用来判断前面那个数的奇偶性,i%2==0就说明i是偶数,==1就说明i是奇数 C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何...

C语言中,a%=b%=4是什么意思。。。?
答:=是取模 赋值 运算符,a%=4的意思就是a=a%4 ,%是取模运算符,这2者差别在于%只进行计算并且运算顺序为从左到右。而%=则进行计算和赋值但是%=却没有运算顺序,因为它是先将a%=4拆成a=a%4后再进行计算,所以你觉得它该如何设置一个计算顺序呢?所以对于4%4%3 我们知道是先进行4%4,...

C语言中,如果我假设a,b都为偶数,可以用if(a%2==b%2==0)来表示吗?
答:不可以。因为if(a%2 == b%2 ==0)等同于 if((a%2 == b%2) == 0)若a,b的值都是偶数,则(a%2 == b%2)的值为真,即为1,则接下来就判断if(1 ==0)则不成立。所以 还是用if(a%2==0 && b%2==0)来判断

matlab中 a(1:2)=[ ]是什么意思
答:matlab中 a(1:2)=[ ]表示的意思是:把数组a的第一个和第二个元素取空。比如数组a=[1,2,3,4,5,6],执行语句后结果就是a=[3,4,5,6]。Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也...

c语言中==和=有什么区别?
答:c语言中==和=只在意义一个方面有区别,具体如下:“==”是关系运算符,而“=”是赋值运算符。其中c语言中的关系运算符还有:1、“!= ” 是不等于的意思。2、“< ”是小于的意思 3、“< =” 是小于等于的意思。4、“> ”是大于的意思 5、“> =” 是大于等于的意思。