精华内容
下载资源
问答
  • C语言自增运算符的置于变量前和变量后的区别与理解自加自减运算符的概念:在普通语句定义并用printf函数输出结果for循环中作为判断条件结语Reference 自加自减运算符的概念: 自增自减运算符存在于C/C++/C#/Java/...
  • linux c 运算符 表达式

    2017-10-06 12:37:12
    1.运算符有哪些c语言的运算符可分为以下几列: 算术运算符:用于数值运算,包括+、-、*、/、%、++、-- 关系运算符:用于比较运算,包括>、=、 逻辑运算符:&&、||、! 位操作运算符:参与运算的量,按二进制位...

    1.运算符有哪些?

    c语言的运算符可分为以下几列:

    算术运算符:用于数值运算,包括+、-、*、/、%、++、--

    关系运算符:用于比较运算,包括>、<、==、>=、<=、!=

    逻辑运算符:&&、||、!

    位操作运算符:参与运算的量,按二进制位参与计算,&,|,!,~,^,<<,>>

    赋值运算符:=,还有一些复合算数赋值和复合位运算赋值。

    条件运算符(?:)

    逗号运算符:,

    指针运算符:取内容*和取地址&

    字节运算符:sizeof

    特殊运算符:() 【】(数组下标),成员运算符(->、.)

    2.运算符的优先级问题

    优先级

    运算符

    名称或含义

    使用形式

    结合方向

    说明

    1

    []

    数组下标

    数组名[常量表达式]

    左到右

     

    ()

    圆括号

    (表达式)/函数名(形参表)

     

    .

    成员选择(对象)

    对象.成员名

     

    ->

    成员选择(指针)

    对象指针->成员名

     

    ++

    后置自增运算符

    ++变量名

    单目运算符

    --

    后置自减运算符

    --变量名

    单目运算符

    2

    -

    负号运算符

    -表达式

    右到左

    单目运算符

    (类型)

    强制类型转换

    (数据类型)表达式

     

    ++

    前置自增运算符

    变量名++

    单目运算符

    --

    前置自减运算符

    变量名--

    单目运算符

    *

    取值运算符

    *指针变量

    单目运算符

    &

    取地址运算符

    &变量名

    单目运算符

    !

    逻辑非运算符

    !表达式

    单目运算符

    ~

    按位取反运算符

    ~表达式

    单目运算符

    sizeof

    长度运算符

    sizeof(表达式)

     

    3

    /

    表达式/表达式

    左到右

    双目运算符

    *

    表达式*表达式

    双目运算符

    %

    余数(取模)

    整型表达式/整型表达式

    双目运算符

    4

    +

    表达式+表达式

    左到右

    双目运算符

    -

    表达式-表达式

    双目运算符

    5

    <<

    左移

    变量<<表达式

    左到右

    双目运算符

    >>

    右移

    变量>>表达式

    双目运算符

    6

    >

    大于

    表达式>表达式

    左到右

    双目运算符

    >=

    大于等于

    表达式>=表达式

    双目运算符

    <

    小于

    表达式<表达式

    双目运算符

    <=

    小于等于

    表达式<=表达式

    双目运算符

    7

    ==

    等于

    表达式==表达式

    左到右

    双目运算符

    !=

    不等于

    表达式!= 表达式

    双目运算符

    8

    &

    按位与

    表达式&表达式

    左到右

    双目运算符

    9

    ^

    按位异或

    表达式^表达式

    左到右

    双目运算符

    10

    |

    按位或

    表达式|表达式

    左到右

    双目运算符

    11

    &&

    逻辑与

    表达式&&表达式

    左到右

    双目运算符

    12

    ||

    逻辑或

    表达式||表达式

    左到右

    双目运算符

    13

    ?:

    条件运算符

    表达式1? 表达式2: 表达式3

    右到左

    三目运算符

    14

    =

    赋值运算符

    变量=表达式

    右到左

     

    /=

    除后赋值

    变量/=表达式

     

    *=

    乘后赋值

    变量*=表达式

     

    %=

    取模后赋值

    变量%=表达式

     

    +=

    加后赋值

    变量+=表达式

     

    -=

    减后赋值

    变量-=表达式

     

    <<=

    左移后赋值

    变量<<=表达式

     

    >>=

    右移后赋值

    变量>>=表达式

     

    &=

    按位与后赋值

    变量&=表达式

     

    ^=

    按位异或后赋值

    变量^=表达式

     

    |=

    按位或后赋值

    变量|=表达式

     

    15

    ,

    逗号运算符

    表达式,表达式,…

    左到右

    从左向右顺序运算

    同一优先级的运算符,运算次序由结合方向所决定

    简单归纳为:!>算数运算符>关系运算符>&&>||>赋值运算符

    3.逻辑运算符参与运算时注意什么?

    逻辑运算符除!外皆为双目运算符,用&&时,只要第一个表达式为假,则整个值便为假,不再判断后面的表达式是否为假。

    同理,用||时,只要第一个表达式为真,则整个值为真,忽略后一个的判断。两者在涉及赋值运算时要注意变量的值是否进行了计算。

    4.条件运算符的用法

    条件运算符:(?:)

    用一个简单的例子来说明。

    if(a>b)

    {max=a;}

    else

    {max=b;}

    用条件运算符表示的条件表达式为:max=(a>b)?a:b;

    5.++,--操作符

    ++是自增1,--是自减1。

    ++a和a++有什么区别

    ++a是自增1再用a进行运算,a++是先将a用于运算再自增1

    比如b【j++】=a【i】

    意为将a【i】的值赋给b【j】,然后将j自增1

    同理,--也是一样。

    6.位运算中,按位与预算

    符号为&。参与运算的两个数字对应的二进制位相与,只有对应的两个二进制位均为1时,结果才为1。参与运算的数以二进制补码出现。

    7.按位或运算

    符号为|,参与运算的两个数字对应的二进制位相或,只要对应的二进制位有一个为1时,结果就为1,参与运算的数同样以二进制补码出现。

    8.按位异或运算

    符号为^,参与运算的两个数字对应的二进制位相异或,对应的二进制位相异时,结果为1,参与运算的数同样以二进制补码出现。

    9.位运算中的左移和右移

    左移和右移一样,将数字以二进制补码的形式,向左或向右依次移动指定的位数

    左移:

    格式:需要移位的数字 << 移位的次数

    运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。

    数学意义:在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的次方。

    右移:

    格式:需要移位的数字 >> 移位的次数

    运算规则:按二进制形式把所有的数字向右移动对应的位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。

    数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。这里是取商。

    10.位运算有什么用处?

    在计算机中,数据的位是可以操作的最小的数据单位,一般的位操作是用来控制硬件的,或者进行行数据的交换,但是灵活的位操作可以有效地提高程序运行的效率。






    展开全文
  • 陷阱目录一、运算符的优先级问题1.1 C语言有哪些运算符1.2 个运算符的优先级1.3 易错总结二、条件判断语句易出中招陷阱2.1 switch......case语句省略break后的陷阱2.2 else带来的陷阱 一、运算符的优先级问题 1.1 ...

    一、运算符的优先级问题

    1.1 C语言中有哪些运算符

    C语言的运算符主要有六类:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符和杂项运算符。

    算术运算符主要是进行数学运算,主要如下表

    算术运算符 描述
    + 加法运算符
    - 减法运算符
    * 乘法运算符
    / 除法运算符
    % 取模运算符,或者叫取余运算符
    ++ 自加运算符
    自减运算符

    关系运算符,主要是指用来进行比较的运算符,详细如下表:

    关系运算符 描述
    == 确定符号两边的值是否相等,是则为真,否则为假
    != 确定等号两边的值是否不相等,是则为真,否则为假
    > 确定符号左边的值是否大于右边的,是为真,否则为假
    < 确定符号左边的值是否小于右边的,是为真,否则为假
    >= 确定符号左边的值是否大于等于右边的,是为真,否则为假
    <= 确定符号左边的值是否小于等于右边的,是为真,否则为假

    逻辑运算符,主要是用来通过符号两边的操作数来确定条件的真假,如下表所示:

    逻辑运算符 描述
    && 符号两边的操作数都为真,则表示的条件才为真,否则为假
    || 符两边的操作数有一个为真,则表示的条件就为真,否则为假
    ! 符号右边的为假,则表示的条件为真,否者为假

    位运算符使用来对二进制数进行的操作,主要包括下表几个操作:

    位运算符 描述
    & 二进制数按位取与运算
    | 按位取或运算
    ^ 按位取异或运算

    赋值运算符是用来,将一个变量的值经过操作后赋值到另一个变量上去,详细如表所示:

    赋值运算符 描述
    = 将符号右边的值赋给左边的变量
    += 将符号右边的值加上符号左边的值赋给左边的变量
    -= 意义类同上
    *= 意义类同上
    /= 意义类同上
    %= 意义类同上
    <<= 意义类同上
    >>= 意义类同上
    &= 意义类同上
    |= 意义类同上
    ^= 意义类同上

    其余的运算符。如下表所示:

    杂项运算符 描述
    (), [], ->, . 后缀
    sizeof 取变量或数据结构的字节数
    & 取址运算符
    * 解地址运算符
    ?: 条件表达式

    1.2 个运算符的优先级

    以上几类的运算符优先级。从上到下一次递减,图下表所示:

    运算符 结合性
    () [] . -> 自左向右
    ! ~ ++ – - (type) * & sizeof 自右向左
    * / % 自左向右
    + - 自左向右
    << >> 自左向右
    < <= > >= 自左向右
    == != 自左向右
    & 自左向右
    ^ 自左向右
    | 自左向右
    && 自左向右
    || 自左向右
    ?: 自右向左
    所有的赋值运算符 自右向左
    , 自左向右

    1.3 易错总结

    • sizeof() 是一个运算符而不是一个函数
    • 位移运算和算术运算混合:
    int hi =1; // hi r的高四位
    int low = 0; // low r的低四位
    // 假设r是一个8位的整数,hi和low也是
    int r = hi << 4 + low; // 该等式是错的,因为加法运算符的优先级高于位移运算符,所以相当于:int r= hi << (4 + low);
    // 正确的如下
    int r = (hi << 4) + low;
    

    逻辑运算符和按位运算符混用:

    // 本来的意思是0和1进行按位与之后是否等于0,但是按下面的方式就成了1是否等于0,然后在按位与
    if(0 & 1 == 0);
    // 正确如下
    if((0 & 1) == 0);
    

    二、条件判断语句易出中招陷阱

    2.1 switch…case语句省略break后的陷阱

    在switch…case语句中若是不注意省略了每一个case后的break,则程序将后紧接着运行按着的下一个case中的语句,不管是否满足条件

    int flag = 2;
    switch(flag){
    case 1:printf("red\n");
    		break;
    case 2:printf("green\n");
    		// break; //若省略掉这个break则将会输出:green和blue
    case 3:printf("blue\n")
    		break;
    		
    }
    

    2.2 else带来的陷阱

    if…else…语句是C语言编程中常用的判断语句,常常会因为省略掉“{}”,而导致很难排查的错误

    if(flag == 0)
    	if(x ==0) printf("no data\n"); // 这里出错
    else{
    	int y = x / flag;
    	return y;
    }
    

    上述判断中是为了避免除数flag为0而做出的判断,但是由于第一个if语句没有加大括号,是编译器误认else语句是第二个if的else,整理一下就清晰了:

    if(flag == 0)
    	if(x ==0) printf("no data\n"); // 这里出错
    	else{
    		int y = x / flag;
    		return y;
    	}
    

    因此为了避免这种错误,就不要为了怕麻烦,而省略掉大括号了,上述代码正确如下:

    if(flag == 0){
    	if(x ==0) printf("no data\n"); 
    }// 加上大括号
    else{
    	int y = x / flag;
    	return y;
    }
    
    展开全文
  • 第三章

    2018-10-06 11:47:15
    c语言的运算符分多少类? 10类 算术运算符有哪些?+、-、*、/、%、++、-- 关系运算符有哪些?&gt;、&lt;、==、&gt;=、&lt;=、!= 逻辑运算符有哪些?... 条件运算符有哪些? ?: 指针运算...
    1. c语言的运算符分多少类? 10类
    2. 算术运算符有哪些?+、-、*、/、%、++、--
    3. 关系运算符有哪些?>、<、==、>=、<=、!=
    4. 逻辑运算符有哪些?&&、||、!
    5. 位操作运算符有哪些?&、|、~、^、<<、>>
    6. 赋值运算符有哪些?=、+=、-=、&=、|=
    7. 条件运算符有哪些?      ?:
    8. 指针运算符有哪些?   *、&
    9. 求字节数运算符是什么? sizeof
    10. 特殊运算符有哪些?  ()、[]、->、. 
    展开全文
  • 浅析C语言操作符

    2017-11-22 10:37:34
    先来说说C语言中都有哪些操作符。c语言中操作符包括:算数操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号操作符,小标引用,函数调用和结构成员。每种操作符都...

    先来说说C语言中都有哪些操作符。c语言中操作符包括:算数操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号操作符,小标引用,函数调用和结构成员。每种操作符都包含多个,下面就来分析分析吧!

    一.算数操作符:

    它包括+,-,*,/,%这五种。其中“/“和“%”这两种运算符比较特殊。当使用除法运算符时,如果”/“两边都是整形的,那么得到的结果则是整数,执行的是整数除法。例如:3/2=1,而不是3/2=1.5。如果想要得到1.5,则必须使得”/“两边的数至少有一个是浮点数。例如:3.0/2=1.5或者3/2.0=1.5。当使用”%”运算符时,两边则必须为整数,不得有浮点型数,得到的结果则是整除之后的余数。例如:3%2=1。

    除了“%”外,其余即可对整数进行操作也可对浮点数进行操作。

    二、移位操作符:

    它包括左移“<<”和右移“>>”两种。“a<<i”就表示a左移i位,这时候左边移出去的i位丢掉二而右边空出来的i位补0。“a>>i”表示a右移i位。右移中又包括逻辑右移和算数右移。逻辑右移指的是右边移出去的丢掉,左边空出来的不管符号位如何都补0。算术右移则是右边移出去的丢掉,左边空出来的按照符号位来补齐。

    在移位操作符中,不能移动负数位,且移动后变量的值并不被改变(如:a=3,a>>1,a的结果任然是3)。

    三、位操作符:

    它包括&,|,^。“&”:任何数&0=0,任何数&任何数=任何数。“^”:任何数^任何数=0,任何数^0=任何数。通过“^”操作符不用创建临时变量就可交换两个变量的值。通移位符和&可得到一个整数存储于内存中二进制的每一位。

    四、赋值操作符:

            i=2;这句代码意思就是将2赋值给i。赋值语句可以给你创建的变量附上你想要的值。赋值操作符也可以连续使用,但最好分开使用。

    五、单目操作符:

    它包括!(逻辑反操作),-(负值),+(正值),&(取地址),sizeof(操作数的类型长度,单位为字节),~(对二进制数按位取反),--(前置后置--),++(前置后置++),*(解引用操作符),(类型)(强制类型转换)。

    !(逻辑反操作符):用此操作符执行如下代码:int a = 0;int b = 1;printf("%d\n", !a);printf("%d\n", !b);输出结果为1和0.即真的取反为假,假的取反为真。

    &(取地址操作符):&a表示取得a的地址。

    sizeof(求得操作数长度):1.sizeof():括号内可能变量名和类型,若去掉括号,只能用变量名,类型则不可去掉括号。例如:int a=0;sizeof(a);结果为4;sizeof(int);结果为四;sizeof a;结果为四;sizeof  int ;则是一个错误的表达,类型需带上括号。2、sizeof(表达式):表达式不做运算。3、sizeof(数组):sizeof(数组名)结果是整个数组的大小。sizeof(&数组名)结果是一个指针的值(4)。而在数组表达的时候,只有sizeof(数组名)和&数组名才表示整个数组,其余的表达形式都表示数组首元素地址。例如:int arr[10]={0};sizeof(arr)=40;sizeof(&arr)=4.    4、sizeof不是函数。

    ~(对二进制数按位取反):在对一个指定的二进制数的某一位取反时运用。例如:想把00001101这个二进制序列的第二位改为0,即可将00000100按位取反得到11111011,然后将00001101与11111011相与就可以满足要求。

    --,++的前后置:一般来说前置比后置高效有些。前置是先加或先减,然后在使用,而后置是使用然后在进行加或减1操作。

    *(解引用操作符):int *p=0;int a=0;p=&a;*p=2;这段代码中第一个*只是说明p是一个指针变量,而第二个*则表示根据p中的地址找到对应的内存空间,然后将2存进那块内存中。

    (类型)(强制类型转换):int a=0;double  p=1.0;a=(int)p;将p强转位int型。




    未完待续……


    =0





    展开全文
  • C语言编程要点

    2017-09-18 00:10:37
    12.13. 适用于整数和浮点数的数学函数分别有哪些? 184 12.14. 什么是多字节字符(multibyte characters)? 185 12.15. 怎样操作由多字节字符组成的字符串? 186 第13章 时间和日期 186 13.1. 怎样把日期存储到单个数字...
  • Q:Lua中有哪些运算符? A: 1、算数运算符:加+,减-,乘*,除/,负-,乘方^。 2、关系运算符:小于<、大于>、小于等于、大于等于>=、等于==、不等于~=。 3、逻辑运算符:并且and,或or,非not。 4、字符串...
  • C的适用范围的扩大、在这些年中语言的改变和各个组织开发的超出其预定内容的编译器,所有这一切要求对C语言有一个比本书第1版更精确和更新的定义。在1983年,美国国家标准协会(ANSI)成立了一个委员会,它的目标是...
  • 难道在C语言中一个结构不能包含指向自己的指针吗? o 2.7 怎样建立和理解非常复杂的声明?例如定义一个包含 N 个指向返回指向字符的指针的函数的指针的数组? o 2.8 函数只定义了一次, 调用了一次, 但编译器提示...
  • 3.1.9 条件运算符 97 3.1.10 运算符的优先级 99 3.2 多项选择问题 103 3.2.1 给多项选择使用else-if语句 104 3.2.2 switch语句 104 3.2.3 goto语句 113 3.3 按位运算符 114 3.3.1 按位运算符的op=用法 116 ...
  • 3.12 我需要根据条件把一个复杂的表达式赋值给两个变量中的一 个。可以用下边这样的代码吗? ((condition) ? a : b) = complicated expression; . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 目录iii ...
  • 你必须知道的495个C语言问题(PDF)

    热门讨论 2009-09-15 10:25:47
    3.12 我需要根据条件把一个复杂的表达式赋值给两个变量中的一 个。可以用下边这样的代码吗? ((condition) ? a : b) = complicated expression; . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 目录iii ...
  • 比较运算符有: $a == $b :相等 $a != $b :不等 $a $b :小于 $a $b :小于等于 $a > $b :大于 $a >= $b :大于等于 与C一样PHP也有三重运算符(?:)。位操作符在PHP同样存在。 优先权 就和C以及Java一样! ...
  • 16.1.4 string还提供了哪些功能 16.1.5 字符串种类 16.2 智能指针模板类 16.2.1 使用智能指针 16.2.2 有关智能指针的注意事项 16.2.3 unique_ptr为何优于auto_ptr 16.2.4 选择智能指针 16.3 标准模板库 ...
  • 12.13 适用于整数和浮点数的数学函数分别有哪些? 12.14 什么是多字节字符(multibyte characters)? 12.15 怎样操作由多字节字符组成的字符串? 第13章 时间和日期 13.1 怎样把日期存储到单个数字中?有这...
  • 21天学通C++ (中文第五版)

    热门讨论 2010-06-23 16:57:03
    4.15 条件运算符(三日运算符) 4.16 小结 4.17 问与答 4.18 作业 4.18.1 测验 4.18.2 练习 第5章 组织成函数 5.1 什么是函数 5.2 返回值、参数和实参 5.3 声明和定义函数 5.3.1 数原型 5.3.2 定义函数 ...
  • [size=15.5556px] 6、条件运算符(三目运算?:) [size=15.5556px] 7、逗号运算符(,) [size=15.5556px] 8、指针运算符(*,&) [size=15.5556px] 9、求字节数运算符(sizeof) [size=15.5556px] 10、特殊运算符(括号,下标,...
  • 同时,我们可以通过这张C++世界地图,了解C++世界的整个面貌:有哪些好玩的地方,有哪些有趣的故事,有哪些有用的知识,有哪些危险而需要注意的地方。这张C++世界地图,将带领我们畅游整个C++世界。  还等什么,让...
  • 图像处理的 相关资料

    2008-12-23 19:15:15
    C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序...
  • 如果为了测试出判定条件中的错误,应使用哪些数据对程序进行测试?请上机验证自己的结论。 (4)用哪四组数据才可以把各种条件的组合都检测一遍? 如果为了测试各种条件的组合的情形,应该使用什么样的测试数据?请...
  • LINGO软件的学习

    2009-08-08 22:36:50
    #eq#是逻辑运算符,用来判断是否“相等”,可参考§4. &1可看作派生集的第1个原始父集的索引,它取遍该原始父集的所有成员;&2可看作派生集的第2 个原始父集的索引,它取遍该原始父集的所有成员;&3,&4,……,...
  • JAVA面试题最全集

    2010-03-13 13:09:10
    34.EJB规范规定EJB中禁止的操作有哪些? 35.java除了8种基本类型外,在虚拟机里还有哪一种,有什么作用? 36.除了使用new关键字创建对象意外,试列举另外三种以上创建实例的方式? 37.classloader中,JDK的API、...
  • c++ 面试题 总结

    2009-09-16 08:44:40
    哪些不常用的程序片断就放入虚拟内存,当需要用到它的时候在load入主存(物理内存)中。这个就是内存管理所要做的事。内存管理还有另外一件事需要做:计算程序片段在主存中的物理位置,以便CPU调度。 内存管理...
  • 1-2 面向对象的编程语言有哪些特点? 解: 面向对象的编程语言与以往各种编程语言有根本的不同,它设计的出发点就是为了能更直接的描述客观世界中存在的事物以及它们之间的关系。面向对象的编程语言将客观事物看作...
  • 10.4.3 CONNECT_BY_ROOT运算符 281 10.4.4 CONNECT_BY_ISCYCLE伪列和NOCYCLE参数 284 10.4.5 CONNECT_BY_ISLEAF伪列 287 10.5 小结 291 第11章 半联结和反联结 292 11.1 半联结 292 11.2 半联结执行计划 300 ...
  • 10.4.3 CONNECT_BY_ROOT运算符 281 10.4.4 CONNECT_BY_ISCYCLE伪列和NOCYCLE参数 284 10.4.5 CONNECT_BY_ISLEAF伪列 287 10.5 小结 291 第11章 半联结和反联结 292 11.1 半联结 292 11.2 半联结执行计划 300 ...

空空如也

空空如也

1 2
收藏数 28
精华内容 11
关键字:

c语言条件运算符有哪些

c语言 订阅