c语言的操作符和部分其他补充
发布日期:2021-05-14 16:07:22 浏览次数:19 分类:精选文章

本文共 1014 字,大约阅读时间需要 3 分钟。

运算符优先级及注意事项

运算符优先级是编程中理解代码逻辑的基础。以下是常见运算符的优先级大致排序,供记忆参考:

  • 单目运算符 > 算术运算符 > 关系运算符 > 逻辑运算符 > 条件运算符 > 赋值运算符 > 逗号运算符
    其次:单目 > 双目 > 三目
  • **注意:**部分优先级可能因编程语言版本或特定情况有所不同,建议结合实际测试确认。

    在运算符运算中,除了优先级,还需注意其结合性。赋值运算符是右结合的,而其他运算符一般左结合。

    补充说明:

    • sizeof()用于获取括号内数据类型所占字节数。
    • typeof()用于获取数据类型信息。
    • 分量运算符包括“.”和“—>”。
    • 强制转换可通过(类型)来实现。

    关于位运算:

  • 位运算的操作数必须是整数(包括char)。
  • 移位操作:
    • 左移:高位舍弃,低位补0。
    • 右移:
      • 对于无符号类型(unsigned),高位补0,低位舍弃。
      • 对于有符号类型(signed),高位补符号位,低位舍弃。
  • 逻辑运算优化:

    阅读代码时,注意到逻辑运算的“惰性”特性。例如:

    int i, j, k;
    i = j = 1;
    k = 2;
    if ((j++ || k++) && i++)
    printf("-%d,%d,%d\n", i, j, k);

    输出结果:2, 2, 2

    关键点分析:

    • 左边的j++ || k++j=1时立即为真,故k++不会执行。
    • 右边i++由于条件满足而执行。
    • 结果:j自加为2,k保持2。

    scanf使用建议:

    在Linux下,使用gcc时,建议在每个scanf后立即调用getchar()以避免缓存问题。

    控制输出美观性:

    int i, j;
    for (i = 1; i <= 9; i++) {
    for (j = 1; j <= i; j++) {
    printf("%d*%d=%2d ", j, i, j * i);
    }
    printf("\n");
    }

    输出结果将整齐美观,各乘积仅占两位数。

    99乘法表示例:

    打印结果如下:

    1*1= 1 1*2= 2 2*2= 4 1*3= 3 2*3= 6 3*3= 9 1*4= 4 2*4= 8 3*4=12 4*4=16 1*5= 5 2*5=10 3*5=15 4*5=20 5*5=25 ...

    结论: 以上内容为技术性质的编程学习内容,建议结合实际编程实践,逐步掌握语言的精髓。

    上一篇:希尔排序的介绍以及例子分析
    下一篇:c语言数据类型知识补充

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年04月26日 19时05分13秒