运算符表达式

//

//  main.c

//  运算符与表达式

//

//  Created by zhangxueming on 15/5/27.

//  Copyright (c) 2015年 zhangxueming. All rights reserved.

//



#include <stdio.h>

//表达式:由运算符常量变量构成的式子

//a+b   4+5*a   a*(b/c)

//表达式有确定的值与类型



//自增自减运算符

//++ --



//int main(int argc, const char * argv[]) {

//    int a = 10;

//    int b = 20;

//    int c = 30;

//    printf("a = %d\n", a++);//先运算表达式的值, a的值再加1

//    printf("a = %d\n", a);

//    printf("a = %d\n", ++a);//先将a的值加1, 再计算表达式的值

//                            //++a <==> a = a+1

//    printf("b = %d\n", b--);

//    printf("b = %d\n", b);

//    printf("b = %d\n", --b);//--b <==> b = b-1;

//    

//    //printf("value = %d\n", ++a++);//错误

//    //printf("value = %d\n", (c++ + c--));//同一个表达式中, 一个变量不可以被修改多次

//    return 0;

//}

//算术运算符

// / * % + -

//优先级

// / * % > + -



//int main(int argc,const char *argv[])

//{

//    int a=10, b = 20;

//    printf("a+b = %d\n", a+b);

//    printf("a-b = %d\n", a-b);

//    

//    printf("a*b = %d\n", a*b);

//    printf("a/b = %d\n", a/b);//a/b 表达式的类型 是int

//    

//    printf("a%%b= %d\n", a%b);

//    

//    printf("value = %d\n", a+b/a);

//    

//    return 0;

//}









//关系运算符

// > >= < <= == !=

//表达式成立 值为1, 表达式不成立 值为0



//int main(int argc,const char *argv[])

//{

//    int a=30, b=20;

//    printf("a>b = %d\n", a>b);

//    

//    printf("a>=b = %d\n", a>=b);

//    

//    printf("a<b = %d\n", a<b);

//    

//    printf("a<=b = %d\n", a<=b);

//    

//    printf("a==b = %d\n", a==b);

//    

//    printf("a!=b = %d\n", a!=b);

//

//    return 0;

//}



//逻辑运算符

//逻辑非: !

//逻辑与(逻辑乘):&&

//逻辑或(逻辑加):||

//! > && > ||



//! 真值表

// 表达式   !表达式

//  真       假

//  假       真



//int main(int argc,const char *argv[])

//{

//    int a = 10;

//    printf("value = %d\n", !a);

//    return 0;

//}



//&&

// 表达式1    表达式2 ...   表达式

//  真         真           真

//  假         真           假

//  真         假           假

//  假         假           假

//结论:只有所有表达式的值都为真的情况, 整个表达式的值才为真, 否者为假



//int main(int argc,const char *argv[])

//{

//    int a=0, b=0;

//    printf("value = %d\n", a&&b);

//    return 0;

//}



// ||

//表达式1  表达式2  ... 表达式

//真         真          真

//假         真          真

//真         假          真

//假         假          假

//结论:任意有一个表达式为真, 则整个表达式为真,只有所有的表达式都为假的时候, 整个表达式的值为假



//int main(int argc, const char *argv[])

//{

//    int a=0, b = 0;

//    printf("value = %d\n", a||b);

//    

//    return 0;

//}



//条件运算符(三目运算符)

// ?:

//条件表达式?表达式1:表达式2

//首先判断条件表达式是否成立 成立整个表达式的值就是表达式1的值 否则是表达式2的值



//int main(int argc,const char *argv[])

//{

//    int a=40, b=80;

//    int c=50;

//    printf("min = %d\n", a<b?a:b);

//    

//    printf("max = %d\n", (a>b?a:b)>c?(a>b?a:b):c);

//    printf("min = %d\n", (a<b?a:b)<c?(a<b?a:b):c);

//    

//    return 0;

//}





//赋值运算符

// =  *= /= %= += -=



//int main(int argc, const char *argv[])

//{

//    int a=10;//初始化:在定义变量的同时, 给变量一个初值

//    int b;

//    b = 20;//赋值语句

//    

//    printf("a = %d\n", a*=10);// a= a*10;

//    printf("a = %d\n", a/=10);// a= a/10;

//    

//    printf("a = %d\n", a+=20);// a= a+20;

//    printf("a = %d\n", a-=20);// a= a-20;

//    

//    printf("a = %d\n", a%=2); // a= a%2;

//    

//    return 0;

//}



//逗号运算符

// ,

//表达式1,表达式2,表达式3,....,表达式n;

//整个表达式的值就是表达式n的值



//int main(int argc,const char *argv[])

//{

//    int a=10,b=20;

//    int c;

//    printf("value = %d\n",(c=a+b,a-b));

//    printf("value = %d\n", (a++,b++,a+b));

//    return 0;

//}



//优先级 : 括号>单目运算符(! ++ --) > 算术运算符(/ * % 大于 + -) > 关系运算符(> >= < <= 大于 == !=) > 逻辑运算符 (&& 大于 ||) > 条件运算符(?:) > 赋值(= /= *= %= += -=) > 逗号运算符(,)



//可以通过加括号的方式提升优先级



//int main(int argc,const char *argv[])

//{

//    int a=10, b=20, c=30;

//    

//    printf("value = %d\n", a*(b+c));

//    return 0;

//}



//scanf printf用法

//int     scanf(const char *format, ...)

//int main(int argc,const char *argv[])

//{

//    int a, b;

//    char ch;

//    char ch2;

//    scanf("%d%d%c",&a,&b,&ch);//&取地址符, 最后一个占位符与双引号之间不要加任何东西,造成输入阻塞

//    //printf("%p %p\n",&a, &b);

//    getchar();

//    

//    scanf("%c",&ch2);

//    

//    printf("a = %d b = %d\n", a,b);

//    printf("ch = %c\n", ch);

//    printf("ch2 = %c\n", ch2);

//    

//    return 0;

//}



//强制类型转换

//int main(int argc,const char *argv[])

//{

//    //00000000 00000000 00000000 00001010

//    //00000000 00000000 00000000 00010100

//    //------------------------------------

//    //00000000 00000000 00000000 00011110

//    //正数位扩展,高位补0

////    int a=10;

////    char b= 20;

////    printf("a+b = %d\n", a+b);//隐式转换

//    

//    int a=6;

//    char b=-5;

//    //对于负数发生位扩展, 高位补1

//    //00000000 00000000 00000000 00000110

//    //11111111 11111111 11111111 11111011

//    //-----------------------------------

//    //00000000 00000000 00000000 00000001

//    

//    printf("a+b = %d\n", a+b);//隐式转换

//    

//    int num=10;

//    float f=3.14;

//    printf("%f\n",num+f);//隐式转换 int 提升成float

//    

//    printf("%d\n",(int)(num+f));//显示转换

//    printf("%d\n", num+(int)f);

//    return 0;

//}



//int main(int argc, const char *argv[])

//{

//    int a=0x2345;

//    char b;

//    b = a;//发生了位截断, 高24位丢弃

//    printf("a = 0x%x\n", a);

//    printf("b = 0x%x\n", b);

//

//    return 0;

//}



//char short int long long long

//float double long double

//1. char short 向int看齐

//2. char short int 向 long longlong 看齐

//3. 整型向浮点类型看齐

//4. float double 向long double看齐



//int main(int argc,const char *argv[])

//{

//    char a=10;

//    short b = 20;

//    printf("a+b = %d\n", a+b);

//    

//    return 0;

//}

 

你可能感兴趣的:(表达式)