zoukankan      html  css  js  c++  java
  • C语言运算符

    一、算术运算

    C语言一共有34种运算符,包括常见的加减乘除运算。

    ①. 加法:+ 还可以表示正号

    ②. 减法:- 还可以表示负号

    ③. 乘法:* 非数学意义上的X

    ④. 除法:/  注意1/2的值为0而非0.5

    ⑤. 取余(模运算):两个整数相除之后的余数(注意两边都必须是整数,带符号只和左值有关)

      注意点:

    ①. int a = 10.8; // 数据精度丢失警告。结果为10——自动类型转换

    ②. int a = (int)10.8; // 无警告。把10.8强制转换为整型——强制类型转换

    ③. double c = 10.6+6// 结果为16.600000。在计算机中,拿两个数值进行运算,则运算符两边的数值需要类型相同,如果不同则进行自动类型提升。即把6转为6.000000后再参与运算。

    ④. 参与运算的两个数是什么类型,那么其结果就是什么类型。int a = 10/3 结果为3。double b = 10/3 结果为3.000000。double c = 10.0/3 结果为3.333333。要求精确值可以进行强制类型转换。double d = (double)3/2 把3转换为double类型变为3.000000,之后2进行自动类型提升转变为2.000000参与运算,结果为1.500000。也可以写成3/(double)2。这种情况需要注意与对整体进行强制转换的区别 double e = (double)(3/2) 是先计算3/2的值为1再对1进行强制类型转换,结果为1.000000。

     

    二、赋值运算

    (一)简单赋值

    int a=10+5; a=b=10;//从右向左,左边不能为常量(const)

    (二)复合赋值

    a=a+5; → a+=5;

    a=a*5; → a*=5;

    a+=5*6+4; → a=a+ (5*6+4);

    提示:预算顺序取决于两点:一是运算符的优先级,二是结合的顺序。

     

    三、自增自减运算

    int a=10;

    把a的值加1有四种方法:

    ①. a=a+1;

    ②. a+=1;

    ③. a++;

    ④. ++a;

    简单区分a++和++a。

     int b;
            
     int a = 10;
            
     b = ++a; // a == 11,b == 11;a先把值加1为11,再赋值给b
            
     b = a++; // a == 11,b == 10;a先把值10复制给b,a自己再加1为11
            
     b = (a++) + (++a);  // a1 == 10,a2 == 12,b == 22
            
     b = (++a) + (a++);  // a1 == 11,a2 == 11,b == 22

    注意:int d = 10++; // 这种写法是错误的,因为对常量进行自加和自减没有任何意义。

     

    四、sizeof

    作用:用来计算变量,常量或者是一种数据类型所占的内存字节数。

    基本形式:sizeof(变量名|常量|数据类型),完成之后返回一个值。

    ①. sizeof 变量|常量

    ②. sizeof (变量|常量)

    ③. sizeof (数据类型)

    注意:数据类型一定要用括号括起来,不能写成sizeof 数据类型这样的形式。

     

    五、关系运算符

     (一)条件判断

    默认情况下。在程序中写出的每一句正确的代码都会被执行,但很多时候我们需要在某个条件成立的情形下才执行某一段代码,如登录操作,这种情况可以使用条件语句来完成。

     (二)真假

    在C语言中,条件成立称为“真”,条件不成立称为“假”。

    C语言规定,任何数值都有真假性,任何非零值都为真,只有0才为假,无布尔类型。

     (三)关系比较

    关系运算的结果只有两种情况,如果条件成立就为真,值为1,如果条件不成立就为假,值为0。有6种运算符,分别是:(1)<  (2)<=  (3) >  (4) >=  (5)==  (6)!=

     (四)使用注意

    ①. ==和!=优先级相等,其他四个关系运算符的优先级相等,且前者的优先级低于后者。如2==3>1 应该先计算3>1

    ②. 关系运算符中,若优先级相同,则“从左往右”结合。如4>3<2,先计算4>3

    ③. 关系运算符中的优先级小于算术运算符。如3+4>8-2 相当于(3+4)> (8-2)

    ④. 练习5! = 4 + 2 * 7 > 3 == 10 先计算5! = 18 > 3 == 10,5! = 1 == 10,1 == 10,假

     

    六、逻辑运算符

    逻辑运算的结果只有两个:真(0)和假(1)

    ①. 与  &&   条件1 && 条件2  只有的那个条件1和条件2都成立时,才为真否则为假。

    ②. 或   ||   条件1 || 条件2    当条件1或条件2中有一个成立时就为真,都不成立时为假。

    ③. 非   !    !条件                 取反

    注意:逻辑运算符在进行运算时,只要能够确定整体的真假性,后面的条件就不再进行而是直接忽略。

    int a = b = 10;

    int c = ( a>5 ) && ( ++b>=11 ); // 此时a == 10,b == 11,c == 1

    int c = ( a<5 ) && ( ++b>=11 ); // 此时a == 10,b == 10,c == 0

    提示:在进行逻辑运算时,如果搞不清楚各个符号的优先级,可以使用()。

     

    七、三目运算符

    双目:需要两个值参与运算

    单目:1个数值参与运算  如 !5

    三目:需要3个数值参与

    格式:条件?数值1:数值2 

    先判断?前的条件,若条件成立则返回数值1,若条件不成立则返回条件2。

    要求比较a和b的值,把数值大的存入到c中  c = a > b ? a : b

    比较a,b,c三个数的值,把最大的值存入到d中

    int  abmax = ( a>b ) ? a : b;

    d = abmax > c ? abmax : c;

  • 相关阅读:
    bzoj1303: [CQOI2009]中位数图
    bzoj1778: [Usaco2010 Hol]Dotp 驱逐猪猡(概率DP+高斯消元)
    bzoj1013: [JSOI2008]球形空间产生器sphere(高斯消元)
    bzoj1857: [Scoi2010]传送带(三分套三分)
    LibreOJ #6221. 幂数 !(数论+dfs+剪枝)
    bzoj1968: [Ahoi2005]COMMON 约数研究(数论)
    bzoj1015: [JSOI2008]星球大战starwar(并查集)
    SRM16 B-2(DP)
    数据库的增、删、改、查 (CURD)
    软件开发
  • 原文地址:https://www.cnblogs.com/zengshuilin/p/5729774.html
Copyright © 2011-2022 走看看