精华内容
下载资源
问答
  • C语言运算符号优先级别

    千次阅读 2014-09-30 23:00:41
     在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。  &&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0...
    1级优先级 左结合
      () 圆括号 
      [] 下标运算符 
      -> 指向结构体成员运算符 
      . 结构体成员运算符 
      2级优先级 右结合 
      ! 逻辑非运算符 
      ~ 按位取反运算符 
      ++ 自增运算符 
      -- 自减运算符 
      - 负号运算符 
      (类型) 类型转换运算符 
      * 指针运算符 
      & 地址与运算符 
      sizeof 长度运算符 
      3级优先级 左结合 
      * 乘法运算符 
      / 除法运算符 
      % 取余运算符 
      4级优先级 左结合
      + 加法运算符 
      - 减法运算符 
      5级优先级 左结合 
      << 左移运算符 
      >> 右移运算符 
      6级优先级 左结合 
      <、<=、>、>= 关系运算符 
      7级优先级 左结合 
      == 等于运算符 
      != 不等于运算符 
      8级优先级 左结合 
      & 按位与运算符 
      9级优先级 左结合 
      ^ 按位异或运算符 
      10级优先级 左结合 
      | 按位或运算符 
      11级优先级 左结合 
      && 逻辑与运算符 
      12级优先级 左结合 
      || 逻辑或运算符 
      13级优先级 右结合 
      ? : 条件运算符 
      14级优先级 右结合 
      = += -= *= /= %= &= ^= |= <<= >>= 全为赋值运算符
      15级优先级 左结合 
      , 逗号运算符 
      优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
      所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
      具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。
      其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。
      接下来是算术运算符,*、/、%的优先级当然比+、-高了。
      移位运算符紧随其后。
      其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。
      所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~)
      逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。
      跟在其后的&&比||高。
      接下来的是条件运算符,赋值运算符及逗号运算符。
      在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。
      &&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。
      在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。
      赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能
    展开全文
  • c语言运算

    2015-07-03 15:28:03
    对于C语言初学者,许多同学对于其中运算符的执行优先级别顺序记得不是很清楚;在计算机等级考试中经常会出现关于优先级类似的题目,也经常有同学问道关于C语言运算符优先级的问题。下面通过表格的形式,将常见的...
  • c语言运算符号优先级别

    万次阅读 2008-12-29 16:54:00
     在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。  &&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b;...
    1级优先级 左结合
      () 圆括号
      [] 下标运算符
      -> 指向结构体成员运算符
      . 结构体成员运算符
      2级优先级 右结合
      ! 逻辑非运算符
      ~ 按位取反运算符
      ++ 自增运算符
      -- 自减运算符
      - 负号运算符
      (类型) 类型转换运算符
      * 指针运算符
      & 地址与运算符
      sizeof 长度运算符
      3级优先级 左结合
      * 乘法运算符
      / 除法运算符
      % 取余运算符
      4级优先级 左结合
      + 加法运算符
      - 减法运算符
      5级优先级 左结合
      << 左移运算符
      >> 右移运算符
      6级优先级 左结合
      <、<=、>、>= 关系运算符
      7级优先级 左结合
      == 等于运算符
      != 不等于运算符
      8级优先级 左结合
      & 按位与运算符
      9级优先级 左结合
      ^ 按位异或运算符
      10级优先级 左结合
      | 按位或运算符
      11级优先级 左结合
      && 逻辑与运算符
      12级优先级 左结合
      || 逻辑或运算符
      13级优先级 右结合
      ? : 条件运算符
      14级优先级 右结合
      = += -= *= /= %= &= ^= |= <<= >>= 全为赋值运算符
      15级优先级 左结合
      , 逗号运算符
      优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
      所有的优先级中,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。其它的都是从左至右结合。
      具有最高优先级的其实并不算是真正的运算符,它们算是一类特殊的操作。()是与函数相关,[]与数组相关,而->及.是取结构成员。
      其次是单目运算符,所有的单目运算符具有相同的优先级,因此在我认为的 真正的运算符中它们具有最高的优先级,又由于它们都是从右至左结合的,因此*p++与*(p++)等效是毫无疑问的。
      接下来是算术运算符,*、/、%的优先级当然比+、-高了。
      移位运算符紧随其后。
      其次的关系运算符中,< <= > >=要比 == !=高一个级别,不大好理解。
      所有的逻辑操作符都具有不同的优先级(单目运算符出外,!和~)
      逻辑位操作符的"与"比"或"高,而"异或"则在它们之间。
      跟在其后的&&比||高。
      接下来的是条件运算符,赋值运算符及逗号运算符。
      在C语言中,只有4个运算符规定了运算方向,它们是&&、| |、条件运算符及赋值运算符。
      &&、| |都是先计算左边表达式的值,当左边表达式的值能确定整个表达式的值时,就不再计算右边表达式的值。如 a = 0 && b; &&运算符的左边位0,则右边表达式b就不再判断。
      在条件运算符中。如a?b:c;先判断a的值,再根据a的值对b或c之中的一个进行求值。
      赋值表达式则规定先对右边的表达式求值,因此使 a = b = c = 6;成为可能
    展开全文
  • C语言运算表达式整理

    2018-12-29 18:25:16
    C语言运算规则是按照运算符的优先级进行的,所以我们首先看一下C的运算优先级别 总结 最简单的优先级就是 算数运算符&amp;gt;关系运算符&amp;gt;逻辑运算符&amp;gt;赋值运算符 然后我们还要...

    C语言的运算规则是按照运算符的优先级进行的,所以我们首先看一下C的运算优先级别
    在这里插入图片描述

    总结 最简单的优先级就是

    1. 算数运算符>关系运算符>逻辑运算符>赋值运算符

    然后我们还要了解一个短路规则(特性)

    短路规则:在整个逻辑表达式中,同级运算符从左到右运算,当前一个分表达式的运算结果能确定整个表达式的值时,再向右的表达式统统免于运算,而以当前这个分表达式的值作为整个表达式的值。

    1. (表达式1)&&(表达式2) 如果表达式1为假,则表达式2不会进行运算,即表达式2“被短路”
      (表达式1)||(表达式2)如果表达式1为真,则表达式2不会进行运算,即表达式2“被短路”

    1.i++和++i的区别;

    i++相当于i=i+1;i++的意思是先将i进行赋值,然后在自行加1;
    ++i也是相当于i=i+1;而++i的意思是先i自加1在进行赋值;
    参考代码
    int a=1,b,c,z=1;
    b=a++; //a先将1赋值给b,b=1,;然后a在自增1;此行运行结束a=2
    c=++z; //z先自增1为2然后在赋值给c,c=2;
    printf(“表达式的值为:%d\n%d\n”,b,c); //输出结果为1和2;
    i–和--i同理;

    2.逻辑运算表达式

    在C语言中true为1,false为0,翻译过来就是真为1,假为0;
    &&两真为真,一假为假; ||一真为真,一假一真也为真;
    (表达式1)&&(表达式2) 如果表达式1为假, 则整个表达式为false=0,如果两个都为真返回1;
    (表达式1)||(表达式2) 如果表达式1为真,则表达式2不会进行运算直接返回1,如果两个都为假返回0。 //此处有用到短路特性
    例:
    a=3>2 || 6 //3>2成立直接返回1; 3>2也是返回1的,用不到6
    a=3>2 && 0 //3>2 就返回1了这时候1与0一真一假返回0;
    a=!n; //n等于任何数a都等于0;

    3.复合运算表达式

    a+=3等价于a=a+3;这种就是最简单的复合运算表达式;()
    复杂一些的有a=1;a=a+=a*=5 等价于 a=a=(a+(a=a*5))最后等于10;它的计算规则是从右往左进行的。不管有多少层的计算都是相同。

    4.逗号表达式

    逗号表达式:表达式1,表达式2
    逗号表达式的求解过程是从左到右依次进行的,但是逗号表达式会将最后一个表达式的值作为整个表达式的答案。
    例:
    b=(a=35,45,a+2) //a=15 ,表达式b=17;求解中先计算第一个表达式a=3*5=15,然后计算第二个,在计算第三个15+2为17。括号很重要如果没有括号b会为15;

    5.条件运算表达式

    条件运算符: ? : 它是唯一的一个三目运算符
    表达式1?表达式2:表达式3 它的意思是当表达式1成立就执行表达式2,如果不成立就执行表达式3;
    例如:
    3>2 ? a:b //返回a
    3>5 ? a:b //返回b

    6.左移与右移计算

    左移相当于十进制2,右移相当于/2;
    让二进制左移N位,高位丢弃,低位补0,得到的 新值 = 原值
    2^N,
    作用:实现二倍乘除运算(右移几位相当于除于二的几次方。左移几位,相当于乘上二的几次方。)
    问题:int是有符号类型,左移可能会把符号左移出去,发生溢出

    展开全文
  • c语言 运算成分

    2020-10-28 16:58:36
    表达式 赋值运算符 int a = 3;//相当于int a; a = 3; float f = 3.56; char c = 'a'; int a, b, c = 5;...赋值运算符左值必须是** 变量 **,不能是常量或者用运算符结合起来的表达式...如果右边表达式的数具有较高级别
    表达式
    赋值运算符
    int a = 3;//相当于int a; a = 3;
    	float f = 3.56;
    	char c = 'a';
    	int a, b, c = 5;//只给c赋初值
    
    • 赋值运算符左值必须是** 变量 **,不能是常量或者用运算符结合起来的表达式
    • 赋值运算符的优先级低于所有运算符,如果在表达式中需要某些赋值动作先做,就必须把那部分用圆括号括起来.
    • 赋值表达式的值等于** 右边表达式 ** 的值,而结果的变量类型由** 左边的变量类型 ** 决定.
    • 如果右边表达式的数具有较高级别的类型,在类型转换时进行截断取舍,可能会** 损失精度 **
    变量初始化
    • 变量一般会被初始化为所允许的最小负数,如果结果异常,有可能是忘记赋值.
    强制类型转换
    //形式:(类型名)(表达式)
    	double(a)//将a转化成double型
    	int(x+y)//将x+y值转化成int型
    	(float)(5/3)//将5/3的值转化为float型
    
    • 在强制类型转换后,** 被转换的量的类型没有发生变化 **
    复合赋值运算
    • 赋值符号前加上其他运算符号,把运算和赋值两个动作结合,作为一个复合运算符
    a += 3;
    a = a + 3;
    //等价
    
    算术运算符和算术表达式
    • 整数运算结果仍为整数
    • double型和实数运算,结果为double型
    • %求余运算结果必须是整数
    关系运算符
    • 将两个值进行比较,判断结果是真是假(bool0&1)
    逻辑运算符
    • 逻辑与&&
    • 逻辑或||
    • 逻辑非!
      ** 避免在表达式中出现运算符优先级错误的方法:使用()标记**
    展开全文
  • C语言运算测试系统

    2010-10-30 01:07:00
    #include<stdio.h><br />#include<string.h><br />#include<stdlib.h><br />#...//级别 char qu[40];//问题 char an[20];//答案 };   struct qnode//链表结构体 { struc
  • C语言运算符优先级别

    2018-03-12 19:28:14
    熟记运算符优先级别技巧: 1、小括号 (),中括号 [],结构成员访问操作符 -&... 移位运算(&lt;&lt; &gt;&gt;) –&gt; 关系算符(&gt; &gt;= &lt; &lt;=...
  • C语言关系运算符及其运算顺序

    千次阅读 2019-09-18 00:07:17
    C语言关系运算符及其运算顺序 | < | 小于 | | <= | 小于或者等于 | | > | 大于 | | >= | 大于或者等于 | | == | 等于 | | != | 不等于 | 前四种关系运算符优先级别相同(< ...
  • 判断某一年是否未闰年的条件 year%4==... 复合赋值运算符 在=前面加上双目运算符如+-%/即构成复合赋值运算符 例如a+=3 等价于a=a+3 所有复合赋值运算符级别相同且与赋值运算符同一优先级都具有右结合性 例如设a的初值为
  • c语言中,数据类型级别由低到高为(由存储长度决定): 例如: int a; a = 'A' + 1.6; 1、在运算过程中,如果参与运算的数据类型不同时,数据将由低类型转化为高类型,即’A’由char类型转换为double类型;...
  • C语言-02-基本运算

    2019-10-07 20:12:13
    一、算术运算 种类 1> 加(+),同时可以表示正号 2> 减(-),同时可以表示负号 3> 乘(*) 4>...① char类型和short类型在运算时,要先自动转换为普通... 高级别的类型 2>强制类型转换 ① 将某种类型...
  • 运算与表达式 运算符 表达式 3.1.1基本算术运算符 单目基本算术运算符 + - 双目基本算术运算符 + - * \ % 3.1.2 优先级与结合性 复合表达式 a+b/3*c-15%3 复合表达式按运算符的优先级别高低次序计算 10+20/10 优先级...
  • c语言学习----运算

    2016-01-06 15:10:57
    c语言中的运算 说到算术运算,就离不开算术运算符,...算术运算优先级别大于赋值运算 ++,--运算符 ++a和a++都表示a的值增加一个单位,区别是++a表示先引用变量本身的值,然后再做运算.a++则表示先做运算,然后引用运算后的值
  • C语言**位运算**终极剖析

    千次阅读 2010-12-23 21:42:00
    <br />C语言有时候被称为中级语言 ,即介于低级与高级之家的编程语言,原因是C语言不仅具有高级语言抽象机制,也具有低级语言直接操作变量个别位的能力,即我们即将要讨论的C语言强大的位 操作运算C语言的...
  • C语言之优先级、结合性与自增运算

    千次阅读 2016-08-18 21:08:53
    在标准C语言的文档里,对操作符的结合性并没有做出非常清楚的解释。一个满分的回答是:它是仲裁者,在几个操作符具有相同的优先级时决定先执行哪一个。 每个操作符拥有某一级别的优先级,同时也拥有左结合性或右...
  • 题目要求:编程实现计算器程序,完成实数的加、减、乘、除运算。注意运算符优先级别。表达式要求采用中缀形式,例如:2.3+7.2*7提示:表达式处理可参考“逆波兰表达式”范例。 完整程序如下: 1 #include <...
  • C语言运算符

    2014-05-26 16:35:01
    C语言运算范围很宽,把除了控制语句和输入输出以外的几乎所有的基本操作都作为运算符处理。主要分为三大类:算术运算符、 关系运算符与逻辑运算符、按位运算符。除此之外,还有一些用于完成特殊任务的运算符。 ...
  • 1.1、获取ms级别时间戳时,同样的函数接口windows32的程序运行ok,数据也正常,在linux平台上则无法正常使用,且数据只有低4字节的数据,如下: 原始数据:1594795490627 丢失后的数据:1362623811 { struct ...
  • C语言学习

    2017-11-08 17:45:00
    c语言 j++(前提是给j赋过初值即j=0); i!=’‘;(‘要打空格’);... (*是一个指针运算符/说明符,而非间接运算符);...自加运算符++的运算级别高于间接运算符*; 逻辑或运算符“||”键盘输入法:“shift”键+"...
  • C语言小技巧

    2018-02-13 01:02:22
    n=(int)a/b//////////////////////////C语言中这样的转换,转换的是和(double)最近的右边的数据,运算级别低于括号,但是高于乘除、加减、赋值符等;而你考虑的k/m的问题:这个关键看进行二元运算的精度的最高级别...
  • c语言类型转换

    2018-04-09 10:16:28
    C语言类型转换:自动类型转换(默认...混合运算:指在一个表达式中参与运算的对象不是同一种数据类型,这时就需要将一个级别低的变量的数据类型转换为级别高的变量的数据类型。函数返回值的类型转换:强制类型转换...
  • C语言 | 关系运算符

    2021-03-26 08:51:14
    C语言中,比较符称为关系运算符,所谓关系运算就是比较运算,将两个数值进行比较,判断其比较的结果是否符合给的的条件。 C语言提供6种关系运算符 < (小于) <= (小于等于) > (大于) >= ...
  • C语言之移位操作

    2020-12-22 20:40:09
    C语言很多操作都是以字节为单位进行的,但有时为了节约空间,很多系统程序中要求在比特位级别进行运算处理。C语言一同提供了六种位运算的运算符,分别为&(按位与),|(按位或),~(按位取反),^(按位异或),&...
  • C语言逗号表达式

    万次阅读 多人点赞 2018-08-14 12:36:14
    c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14,(a=3*5,a*4)...
  • 在表达式中, 各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约, 以便确定是自左向右进行运算还是自右向左进行运算。 这种结合性是其它高级语言的运算符所没有的,因此也增加...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 202
精华内容 80
关键字:

c语言运算级别

c语言 订阅