• 运算符表达式


    //
    //  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
    ", a++);//先运算表达式的值, a的值再加1
    //    printf("a = %d
    ", a);
    //    printf("a = %d
    ", ++a);//先将a的值加1, 再计算表达式的值
    //                            //++a <==> a = a+1
    //    printf("b = %d
    ", b--);
    //    printf("b = %d
    ", b);
    //    printf("b = %d
    ", --b);//--b <==> b = b-1;
    //    
    //    //printf("value = %d
    ", ++a++);//错误
    //    //printf("value = %d
    ", (c++ + c--));//同一个表达式中, 一个变量不可以被修改多次
    //    return 0;
    //}
    //算术运算符
    // / * % + -
    //优先级
    // / * % > + -
    
    //int main(int argc,const char *argv[])
    //{
    //    int a=10, b = 20;
    //    printf("a+b = %d
    ", a+b);
    //    printf("a-b = %d
    ", a-b);
    //    
    //    printf("a*b = %d
    ", a*b);
    //    printf("a/b = %d
    ", a/b);//a/b 表达式的类型 是int
    //    
    //    printf("a%%b= %d
    ", a%b);
    //    
    //    printf("value = %d
    ", a+b/a);
    //    
    //    return 0;
    //}
    
    
    
    
    //关系运算符
    // > >= < <= == !=
    //表达式成立 值为1, 表达式不成立 值为0
    
    //int main(int argc,const char *argv[])
    //{
    //    int a=30, b=20;
    //    printf("a>b = %d
    ", a>b);
    //    
    //    printf("a>=b = %d
    ", a>=b);
    //    
    //    printf("a<b = %d
    ", a<b);
    //    
    //    printf("a<=b = %d
    ", a<=b);
    //    
    //    printf("a==b = %d
    ", a==b);
    //    
    //    printf("a!=b = %d
    ", a!=b);
    //
    //    return 0;
    //}
    
    //逻辑运算符
    //逻辑非: !
    //逻辑与(逻辑乘):&&
    //逻辑或(逻辑加):||
    //! > && > ||
    
    //! 真值表
    // 表达式   !表达式
    //  真       假
    //  假       真
    
    //int main(int argc,const char *argv[])
    //{
    //    int a = 10;
    //    printf("value = %d
    ", !a);
    //    return 0;
    //}
    
    //&&
    // 表达式1    表达式2 ...   表达式
    //  真         真           真
    //  假         真           假
    //  真         假           假
    //  假         假           假
    //结论:只有所有表达式的值都为真的情况, 整个表达式的值才为真, 否者为假
    
    //int main(int argc,const char *argv[])
    //{
    //    int a=0, b=0;
    //    printf("value = %d
    ", a&&b);
    //    return 0;
    //}
    
    // ||
    //表达式1  表达式2  ... 表达式
    //真         真          真
    //假         真          真
    //真         假          真
    //假         假          假
    //结论:任意有一个表达式为真, 则整个表达式为真,只有所有的表达式都为假的时候, 整个表达式的值为假
    
    //int main(int argc, const char *argv[])
    //{
    //    int a=0, b = 0;
    //    printf("value = %d
    ", 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
    ", a<b?a:b);
    //    
    //    printf("max = %d
    ", (a>b?a:b)>c?(a>b?a:b):c);
    //    printf("min = %d
    ", (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
    ", a*=10);// a= a*10;
    //    printf("a = %d
    ", a/=10);// a= a/10;
    //    
    //    printf("a = %d
    ", a+=20);// a= a+20;
    //    printf("a = %d
    ", a-=20);// a= a-20;
    //    
    //    printf("a = %d
    ", 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
    ",(c=a+b,a-b));
    //    printf("value = %d
    ", (a++,b++,a+b));
    //    return 0;
    //}
    
    //优先级 : 括号>单目运算符(! ++ --) > 算术运算符(/ * % 大于 + -) > 关系运算符(> >= < <= 大于 == !=) > 逻辑运算符 (&& 大于 ||) > 条件运算符(?:) > 赋值(= /= *= %= += -=) > 逗号运算符(,)
    
    //可以通过加括号的方式提升优先级
    
    //int main(int argc,const char *argv[])
    //{
    //    int a=10, b=20, c=30;
    //    
    //    printf("value = %d
    ", 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
    ",&a, &b);
    //    getchar();
    //    
    //    scanf("%c",&ch2);
    //    
    //    printf("a = %d b = %d
    ", a,b);
    //    printf("ch = %c
    ", ch);
    //    printf("ch2 = %c
    ", 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
    ", 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
    ", a+b);//隐式转换
    //    
    //    int num=10;
    //    float f=3.14;
    //    printf("%f
    ",num+f);//隐式转换 int 提升成float
    //    
    //    printf("%d
    ",(int)(num+f));//显示转换
    //    printf("%d
    ", num+(int)f);
    //    return 0;
    //}
    
    //int main(int argc, const char *argv[])
    //{
    //    int a=0x2345;
    //    char b;
    //    b = a;//发生了位截断, 高24位丢弃
    //    printf("a = 0x%x
    ", a);
    //    printf("b = 0x%x
    ", 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
    ", a+b);
    //    
    //    return 0;
    //}
  • 相关阅读:
    P1582 倒水 (二进制)
    P2014 选课 (树形动规)
    多项式前置技能——复数
    P3694 邦邦的大合唱站队 (状压DP)
    P1754 球迷购票问题 (卡特兰数,递推)
    [SCOI2003]字符串折叠 (区间DP)
    [SDOI2008]仪仗队 (欧拉函数)
    4-字符串
    3.输出,输入,基本数据类型
    2.栈,堆,寄存器的理解
  • 原文地址:https://www.cnblogs.com/0515offer/p/4543744.html
Copyright © 2020-2023  润新知