Day01

C语言的类型转换

  • 自动类型转换
    注意点: 自动类型转换不会修改数据原有的值.
    • 运算转换/赋值转换
      //运算转换
        //注意点:编译器会把小类型的自动转换为大类型的    
    double res = 7.5 / 2;
    printf("%lf\n", res);

    //赋值转换
      //注意点: 在赋值的时候会自动把等号右变的类型转换为等号左边的类型

    int num = 3.14;
    double num1 = 5;
    printf("%i\n", num);
    printf("%lf\n", num1);
  • 强制类型转换
//强制类型转换
    int num1 = 10;
    double res = (double)num1;
    printf("%lf\n", res);

赋值运算符

简单赋值运算符
// 1. 简单赋值运算符
    // 将右边的值赋值给左边的变量
    // 结合性: 右结合性
    int num = 10;
    int value = 20;
复杂赋值运算符号
// 2. 复杂赋值运算符
    int num1 = 5;
    num1 += 5;  //num1 = num1 + 5
    num1 -= 5;
    num1 *= 5;
    num1 /= 5;
    num1 %= 5;
赋值运算符的结合性
/*
     * 赋值运算符的结合性
     * 右结合性
     *
     * 优先级: 赋值运算符的优先级低于算术运算符的优先级
     *
     */
    double value = 10.0;
    value /= 5 + 3; // value = 10 / (5 + 3)
    printf("%lf\n", value); //1.250000

    int temp = 3 + 8; 
    printf("%i\n", temp);


变量自增自减

注意点: 自增或者自减只能对变量使用,不能用于常量和表达式,自增或者自减最好单独出现

 /*
     * 1. 自增作用: 快速+1
     * 只要在变量的后面或者前面写上++,就代表给这个变量+1
     *
     * num++ 和 ++num 是有区别的:
     *      第一种是先参与其他运算后自增,先用后变
     *      第二种是先自增后参与其他运算,先变后用
     *
     *
     * 2. 自减作作用: 快速-1
     *
     * 只要在变量的后面或者前面写上--,就代表给这个变量-1
     *
     * num-- 和 --num 是有区别的:
     *      第一种是先参与其他运算后自增,先用后变
     *      第二种是先自增后参与其他运算,先变后用
     *
     * 注意点: 自增或者自减只能对变量使用,不能用于常量和表达式
     *
     */

    int num = 5, res = 0;

    res = 10 + num++;
    printf("%i\n", res);
    printf("%i\n", num);

    res = 10 + ++num;
    printf("%i\n", res);
    printf("%i\n", num);


sizeof运算符

sizeof
    /*
     * sizeof运算符
     * 格式:
     * 第一种格式:
     * sizeof(变量/常量/数据类型);
     * 第二种格式
     * sizeof 变量/常量
     *
     * 作用: 专门用于计算变量/常量/数据类型占用的存储空间大小,返回的是整型数字
     *
     */

    //计算变量
    int value = 10; //4字节
    double num = 5.2; //8字节

    int res = sizeof(value);
    int res2 = sizeof(num);
//    printf("%i\n", res2);


    //计算常量

    int res3 = sizeof(5); //4字节
//    printf("%i\n", res3);


    //计算数据类型

    int res4 = sizeof(char); //1字节
    int res5 = sizeof(float);//4字节

    printf("%i\n", res4);
    printf("%i\n", res5);
sizeof 常用知识点

注意点: sizeof是一个运算符,而不是一个函数,而且sizeof运算符的优先级高于算术运算符的优先级.

/*
     * sizeof运算符常用的知识点
     *
     */

    //sizeof运算符的优先级高于算术运算符,所以会优先计算sizeof
    int res = sizeof(3.15 + 1) + 3;
    printf("%i\n", res); // 11

逗号运算符

注意点: 逗号是一个运算符,所有运算符都有结果,所以逗号运算符的结果是最后一个表达式的值

逗号运算符结合性: 左结合性
    
     逗号运算符
    //同时定义多个变量
    int a, b;

    //同时给多个变量赋值

    a = 10, b = 20;

    //常见的面试题,利用逗号的计算规则

    int num1 = 10, num2 = 15, num3 = 20;

    int res = ((num1 + num2), (num2 + num3));

    printf("%i\n", res); //35

关系运算符

  • 关系运算符: > >= < <= == !=, 返回值: 1(true) 或者 0(false)

注意点: c语言中非0即是真,所有非0的数都为true,只有0为false

  • 关系运算符的结合性: 具有左结合性

注意点: 当优先级和结合性同时存在时,优先考虑优先级,结合性后考虑

  • 关系运算符的优先级: > >= < <= 优先级高于 == !=
/*
     * 关系运算符:  >  >=  < <= ==  !=
     */

    int res = 14 >= 12;
    printf("%i\n", res);// 1


    int num1 = 2, num2 = 6;
    int res2 = num1 == num2;

    printf("%i\n", res2);// 0

    int num1 = 4, num2 = 8, num3 = 10;
    
    //                0    ==    10
    int res = num1 >= num2 == num3; //0
    printf("%i\n", res);

逻辑运算符

逻辑与 &&
  • 格式: 表达式 && 表达式
  • 返回值: 和关系运算符一样,返回结果0(false) 或者 1(true)
  • 规则: 一假则假,其中有一个假的则结果为假,全部为真结果才为真

注意点:逻辑短路,即如果第一个表达式为假,则全部为假就不会计算第二个表达式

//逻辑&& 一假则假
    int num1 = 10, num2 = 20;
    //第一个表达式为假,则不会继续计算第二个表达式
    int res = num1 > 20 && num2++ > 30; //0
    printf("%i\n", res);
    printf("%i\n", num2);
逻辑与 ||
  • 格式: 表达式 || 表达式
  • 返回值: 和关系运算符一样,返回结果0(false) 或者 1(true)
  • 规则: 一真则真,其中有一个真的则结果为真,全部为假则结果才为假1

注意点:同逻辑与一样,也有逻辑短路,如果第一个表达式为真,则不会继续计算第二个表达式,返回结果为真

//逻辑||

    int num1 = 15, num2 = 30;
    //一真则真,如果第一个表达式为真,则无论第二个表达式是否为真,都不会去计算
    int res = 15 > 10 || num2++ < 3; //1
    printf("%i\n", res);
    printf("%i\n", num2);
逻辑与 !
  • 格式: !表达式
  • 返回值: 和关系运算符一样,返回结果0(false) 或者 1(true)
  • 特点: 可以连续书写非逻辑
  • 规则: 真既是假, 假既是真
   //逻辑!
    int res = !!!!(5>100);
    printf("%i\n", res); //0
三目运算符
  • 格式: 表达式 ? 结果1 : 结果2
  • 返回值: 如果表达式为真,则返回结果1,如果不成立则返回结果2

注意点: 三目运算中的? :不能分开使用,而且三目运算符的优先级低于算术运算符的优先级

    /*
     * 三目运算符号
        注意点: 结果1 和结果2如果放的是函数,则该函数必须要有返回值
     */

    int num1 = 30, num2 = 20;
    //表达式成立,则返回true,不成立则返回false

    int res = num1 > num2 ? printf("true") : printf("false"); //true

    //由于三目运算符的优先级低于算术运算符,所有会先进行计算判断
    int res2 = 10 + 5 < 20 + 30 ? printf("1\n") : printf("0\n"); //1

8. 常见运算符的等级


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,576评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,515评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,017评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,626评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,625评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,255评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,825评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,729评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,271评论 1 320
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,363评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,498评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,183评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,867评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,338评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,458评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,906评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,507评论 2 359

推荐阅读更多精彩内容