A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wxh794708907 中级黑马   /  2015-7-15 16:24  /  724 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

运算符:算术运算符、赋值运算符、复合赋值运算符、自增自减运算符、sizeof运算符、逗号运算符、关系运算符、逻辑运算符、三目运算符;
             单目运算符、双目运算符、三目运算符;
运算符的结合性(前提是优先级必须相同)分为:左结合性、右结合性;
运算符的优先级:分为十五级;

算术运算符中  m%n 求余注意:1.m和n都不能为小数;
                            2.m<0结果为负数 如-3%10;
                            3.n<0结果为正数 正负取决于m不取决于n;

赋值运算符只有一个就是等号  将等号左侧的值给等号左侧的变量;等号左侧必须是一个变量;

复合赋值运算符 如+= -= *= /= %= 表示的是两步 先运算 后赋值 他是双目运算符 例子如下:int a=3 b=4;a+=b的含义其实就是a=a+b a-=b就相当于a=a-b;

自增自减运算符是单目运算符  ++a前缀表达式  a++后缀表达式  加加在前先加加 加加在后 后加加;其实意思就是++a
是先要加上1在赋值给变量  a++是a的值就是表达式的值 然后a的值加1;无论++a还是a++  a的值最后都会加上1;


sizeof运算符 是单目运算符 它不是一个函数 要切记 ;它是用来计算常量、变量、数据类型在内存中的字节数;
   它的用法如下在常量的计算中 {可以省略括号}sizeof(1)表示计算常量 1 在内存中占用的字节数 输出来是4 因为1是十进制的整数
                              sizeof(2.3f)计算单精度float常量在内存中的字节数  4
                              sizeof(2.3)计算double常量在内存中的字节数  8
                              sizeof(‘a’)计算字符char常量在内存中的字节数 4

              它在变量的运算中{可以省略括号} int a=10;float f1=2.3f; double d1=2.3 char ch=‘a’;
                       result=sizeof(a)计算int类型变量a在内存中占用的字节数 4
                       result=sizeof(f1 计算float类型的变量f1在内存中占用的字节数4
                       result=sizeof(d1)计算double类型变量d1在内存中占用的字节数8
                       result=sizeof(ch)计算char类型变量ch在内存中占用的字节数 1

             它在数据类型的运算中{用在数据类型时不能省略括号}

                                sizeof(int)4
                                sizeof(float)4
                                sizeof(double)8
                                sizeof(char) 1


逗号表达式:1、可以嵌套使用 如(a++,(a+b,a+3,a+b))
            2、有时候我们不太注意逗号表达式的值 而是注重运算过程中哪些部分发生变化;
            3、并不是所有出现都好的地方都能组成逗号表达式 例如定义变量时;

关系运算符 包含有 >  <  == ! >=  <=; 这个表达式只有两种结果 要么真要么加 真用1表示 假用0表示;

关系运算符的结合性为 左结合 如  int a=3 b=4 result=-1;
                                result=a>b<3;
                                此时输出的结果为1  因为 3>4为假 所以为0 然后0<3为真所以最后为1
                            又比如result=a==b>3 首先必须先算b>3因为优先级是>在==前 所以最后结果为0 因为b>3的值为1 a不等于1所以为0;

逻辑运算符  一般的形式为   表达式  逻辑运算符 表达式 它的返回值也是一个真 一个假 分别用1和0表示;
&&与  ||或 !非  10<a<b 表示方法为 a>10&&a<b  注意非的用法 因为非的优先级是第二级必须先运算非,例如 int a=3; !a<3 就必须先运算!a这一部分 即让a变成0 然后0<3 为真 答案为1;
且非的结合性是右结合性  再举个例子  !!!a 先 计算!a 为0 然后!0为1  !1为0;

切记一点 所有的数 非0 就是1 ;非1就是0
         逻辑与的优先级高于逻辑或  1 || 0 && 0就要从右边开始计算 等同于1 || (0 && 0)

int x,y,z;
x=y=z=0 result=-1;
result=++x || ++y && z++;
此时result的值就为1 但是x的值为1 y=z=0 这里有一个逻辑或短路了 因为逻辑或只要一真为真 只要有一个是真就真了 后面的就不会执行了 ++x就为1了 那么后面是|| 后面的就不会执行 ;

逻辑与也一样会短路 跟逻辑或的情况是一样的 只要有一个是假 后面的就不会执行了 一假为假;

三目运算符  格式是表达式1 ? 表达式2 :表达式3 ;
它的求职顺序:表达式1的值为  真,那么表达式2的值为这个三目运算表达式的值 否则第三个为这个三目运算表达式的值;
利用它来求三个数的最大值程序如下
#include<stadio.h>
int main(){
    int num1,num2,num3,max=0;
        num1=num2=num3=0;
    //提示用户输入三个数并以逗号隔开
    printf("请输入三个数,并以逗号隔开:%s/n");
    //接收用户输入的三个数,并存到num1 num2 num3 中
    scanf("%d,%d,%d",&num1,&num2,&num3);
    //用max接收num1和num2的最大值
      max=num1>num2?num1:num2;
    //用max接收num1和num2的值与num3的值比较中的最大值
      max=max>num3?max:num3;
    printf("max=:%d",max)
   
    return = 0

}

2 个回复

倒序浏览
还不错,,继续加油
回复 使用道具 举报
忘了写 逗号表达式怎么取值了 逗号表达式的值是取的最后一个表达式,n
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马