建设银行官方网站手机版下载/seo快速工具

建设银行官方网站手机版下载,seo快速工具,活字格能开发企业网站吗,wordpress 文章透明C 语 言 --- 操 作 符 2 移 位 操 作 符定 义原 码 补 码 和 反 码左 移&#xff08;<<&#xff09;右 移&#xff08;>>&#xff09;算 术 右 移逻 辑 右 移 按 位 与、按 位 或、和 按 位 异 或按 位 与按 位 或按 位 异 或 逻 辑 反 操 作负 值 操 作按 位 取 反…

C 语 言 --- 操 作 符 2

  • 移 位 操 作 符
    • 定 义
    • 原 码 补 码 和 反 码
    • 左 移(<<)
    • 右 移(>>)
      • 算 术 右 移
      • 逻 辑 右 移
  • 按 位 与、按 位 或、和 按 位 异 或
    • 按 位 与
    • 按 位 或
    • 按 位 异 或
  • 逻 辑 反 操 作
  • 负 值 操 作
  • 按 位 取 反
  • 逻 辑 与
  • 逻 辑 或
  • 三 目 操 作 符
  • 逗 号 表 达 式
  • 逗 号 表 达 式
  • 总结

💻作 者 简 介:曾 与 你 一 样 迷 茫,现 以 经 验 助 你 入 门 C 语 言
💡个 人 主 页:@笑口常开xpr 的 个 人 主 页
📚系 列 专 栏:C 启 新 程
✨代 码 趣 语:最 开 始 的 90% 代 码 占 用 了 开 始 的 90% 的 开 发 时 间;剩 下 10% 代 码 同 样 需 要 90% 的 开 发 时 间。
💪代 码 千 行,始 于 坚 持,每 日 敲 码,进 阶 编 程 之 路。
📦gitee 链 接:gitee

在这里插入图片描述

       在 编 程 的 世 界 里,每 一 行 代 码 都 可 能 隐 藏 着 无 限 的 可 能 性 。你 是 否 想 过,一 个 小 小 的 程 序 究 竟 能 改 变 什 么?它 可 以 是 解 决 复 杂 问 题 的 工 具 ,也 可 以 是 实 现 梦 想 的 桥 梁。今 天,就 让 我 们 一 起 走 进 C 语 言 操 作 符 的 世 界,探 索 它 的 无 限 潜 力。

移 位 操 作 符

定 义

       在 C 语 言 里,移 位 操 作 符 用 于 对 二 进 制 位 进 行 移 动 操 作,主 要 有 左 移(<<)和 右 移(>>)两 种。

原 码 补 码 和 反 码

在 计 算 机 中,原 码、反 码 和 补 码 是 用 于 表 示 有 符 号 整 数 的 三 种 编 码 方 式

原 码

         原 码 是 一 种 最 简 单 的 机 器 数 表 示 法。最 高 位 作 为 符 号 位,0 表 示 正 数,1 表 示 负 数,其 余 位 表 示 数 值 的 绝 对 值。
例 如,在 8 位 二 进 制 表 示 中:
+5 的 原 码 是 0000 0101。
-5 的 原 码 是 1000 0101。

反码

         正 数 的 反 码 和 原 码 相 同;负 数 的 反 码 是 在 原 码 的 基 础 上,符 号 位 不 变,其 余 位 按 位 取 反。
例 如,在 8 位 二 进 制 表 示 中:
+5 的 原 码 是 0000 0101,反 码 同 样 是 0000 0101。
-5 的 原 码 是 1000 0101,反 码 则 是 1111 1010。

补 码

正 数 的 补 码 和 原 码 相 同;负 数 的 补 码 是 在 反 码 的 基 础 上 加 1。
例 如,在 8 位 二 进 制 表 示 中 :
+5 的 原 码 是 0000 0101,补 码 同 样 是 0000 0101。
-5 的 原 码 是 1000 0101,反 码 是 1111 1010,补 码 是 1111 1011。

使 用 补 码 的 原 因

         内 存 中 存 储 补 码 的 二 进 制。使 用 补 码 能 够 简 化 计 算 机 的 运 算,因 为 可 以 把 减 法 运 算 转 化 为 加 法 运 算,进 而 减 少 计 算 机硬 件 的 复 杂 度。

总 结

正 数

原 码 反 码 和 补 码 都 是 它 本 身。

负数

按位取反
+1
-1
取反
原码
反码
补码

补 码 —> 反 码 的 两 种 方 式:

-1
按位取反
补码
反码
原码
按位取反
+1
补码
中间过程不是反码
原码

反 码 和 补 码 都 是 符 号 位 不 变,也 就 是 第 1 位 不 变。

左 移(<<)

       将 操 作 数 的 二 进 制 位 向 左 移 动 指 定 的 位 数,右 边 空 出 的 位 用 0 填 充。

下 面 展 示代码示例

#include <stdio.h>
int main() 
{int num1 = 5; //整型是4个字节,所以是32个比特位//00000000000000000000000000000101 --- 5的原码//00000000000000000000000000000101 --- 5的反码//00000000000000000000000000000101 --- 5的补码int result1 = num1 << 1; //左移1位,结果为10//00000000000000000000000000001010 --- 左边去掉1个0,右边补1个0int num2 = -5;//10000000000000000000000000000101 --- -5的原码//11111111111111111111111111111010 --- -5的反码//11111111111111111111111111111011 --- -5的补码int result2 = num2 << 1;//左移1位,结果为-10//11111111111111111111111111110110 --- 左边去掉1个1,右边补1个0//10000000000000000000000000001001 --- 取反//10000000000000000000000000001010 --- +1,结果为-10int num3 = -5;//10000000000000000000000000000101 --- -5的原码//11111111111111111111111111111010 --- -5的反码//11111111111111111111111111111011 --- -5的补码int result3 = num3 << 2;//左移2位,结果为-20//11111111111111111111111111101100 --- 左边去掉2个1,右边补2个0//10000000000000000000000000010011 --- 取反//10000000000000000000000000010100 --- +1,结果为-20printf(" 5左移1位是:%3d\n", result1);printf("-5左移1位是:%3d\n", result2);printf("-5左移2位是:%3d\n", result3);return 0;
}

运 行 结 果 是 :

在这里插入图片描述

总 结

         左 移 n 位 相 当 于 乘 以 2 的 n 次 方。
         将 操 作 数 的 二 进 制 位 向 左 移 动 指 定 的 位 数,如 果 是 正 数,左 边 去 掉 几 个 0,如 果 是 负 数,左 边 去 掉 几 个 1,右 边 空 出 的 位 用 0 填 充。

右 移(>>)

         把 操 作 数 的 二 进 制 位 向 右 移 动 指 定 的 位 数。右 移 分 为 逻 辑 右 移 和 算 术 右 移:
逻 辑 右 移:左 边 空 出 的 位 用 0 填 充。
算 术 右 移:左 边 空 出 的 位 用 原 符 号 位 填 充。

         对 于 有 符 号 整 数 的 右 移 操 作 采 用 的 是 算 术 右 移无 符 号 整 数 的 右 移 操 作 采 用 的 是 逻 辑 右 移

算 术 右 移

有 符 号 数 右 移 许 多 次 后,正 数 变 为 0,负 数 成 -1
只 有 -1 的 补 码 全 是 1

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = -1;//只有-1的补码全是1;//10000000000000000000000000000001 - 原码//11111111111111111111111111111110 - 反码//11111111111111111111111111111111 - 补码int b = a >> 1;//11111111111111111111111111111111 - 补码//10000000000000000000000000000000 - //10000000000000000000000000000001 - 原码int c = 1;//00000000000000000000000000000001 - 原码int d = c >> 1;//00000000000000000000000000000000 - 补码printf("%d\n", b);printf("%d\n", d);return 0;
}

在这里插入图片描述

逻 辑 右 移

         在 逻 辑 右 移 中,将 二 进 制 数 整 体 向 右 移 动 指 定 的 位 数,右 边 移 出 的 位 直 接 舍 弃,而 左 边 空 出 的 位 用 0 来 填 充。

特 点

  • 数 值 缩 小:每 右 移 一 位,相 当 于 该 无 符 号 数 除 以 2 并 向 下 取 整。不 断 右 移,数 值 会 逐 渐 变 小,最 终 变 为 0。
  • 不 改 变 符 号 性 质:由 于 无 符 号 数 本 身 就 不 存 在 正 负 之 分,右 移 操 作 不 会 改 变 其 无 符 号 的 性 质。

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{unsigned int num = 100;//00000000000000000000000001100010//32+64int right = num >> 4;//00000000000000000000000000000110 --- 6printf("%u\n", right);return 0;
}

在这里插入图片描述

注 意 事 项

操 作 数 类 型

         逻 辑 右 移 主 要 用 于 无 符 号 整 数。如 果 操 作 数 是 有 符 号 整 数,右 移 操 作 可 能 是 算 术 右 移( 高 位 补 符 号 位),具 体 取 决 于 编 译 器 和 平 台。

右 移 位 数

       右 移 的 位 数 不 能 超 过 操 作 数 的 位 数,否 则 结 果 是 未 定 义 的。例 如,对 于 32 位 无 符 号 整 数,右 移 位 数 应 在 0 到 31 之 间。

按 位 与、按 位 或、和 按 位 异 或

按 位 与

定 义

在 C 语 言 里,按 位 与 是 一 种 基 本 的 位 操 作,使 用 & 运 算 符 来 实 现。

原 理

         按 位 与 操 作 会 对 两 个 操 作 数 的 对 应 二 进 制 位 进 行 逐 位 比 较,当 且 仅 当 两 个 对 应 位 都 为 1 时,结 果 的 该 位 才 为 1,否 则 为 0。

口 诀

同 为 1 则 1,否 则 为 0

解 释

         在 按 位 与 操 作 里,对 两 个 操 作 数 的 每 一 对 对 应 的 二 进 制 位 进 行 比 较。只 有 当 这 两 个 对 应 的 二 进 制 位 都 为 1 时,结 果 的 对 应 位 才 会 是 1;只 要 有 一 个 位 是 0,结 果 的 对 应 位 就 为 0。

真 值 表:

在这里插入图片描述

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 3;//00000000000000000000000000000011 --- 补码int b = -5;//10000000000000000000000000000101 --- 原码//11111111111111111111111111111010 --- 反码//11111111111111111111111111111011 --- 补码int c = a & b;//a和b的补码//00000000000000000000000000000011 --- a的补码//11111111111111111111111111111011 --- b的补码//00000000000000000000000000000011 --- a & bprintf("%d\n", c);return 0;
}

在这里插入图片描述

注 意

         在 进 行 按 位 与 运 算 完 之 后,如 果 最 高 位 为 1,则 需 要 将 补 码 转 化 为 原 码。如 果 最 高 位 为 0,则 不 需 要 转 化 为 原 码,直 接 化 成 十 进 制 即 可。

按 位 或

定 义

在 C 语 言 中,按 位 或 是 一 种 基 本 的 位 操 作,使 用 | 运 算 符 实 现。

原 理

         按 位 或 操 作 会 对 两 个 操 作 数 的 对 应 二 进 制 位 进 行 逐 位 比 较,只 要 两 个 对 应 位 中 有 一 个 为 1 ,结 果 的 该 位 就 为 1;只 有 当 两 个 对 应 位 都 为 0 时,结 果 的 该 位 才 为 0。

口 诀

有 1 则 1,全 0 为 0

口 诀 解 释

         按 位 或 操 作 是 对 两 个 操 作 数 的 每 一 对 对 应 的 二 进 制 位 进 行 比 较。在 比 较 过 程 中,只 要 这 两 个 对 应 的 二 进 制 位 中 有 一 个 是 1,那 么 结 果 的 对 应 位 就 为 1;只 有 当 这 两 个 对 应 的 二 进 制 位 都 为 0 时,结 果 的 对 应 位 才 为 0。

真 值 表

在这里插入图片描述

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 3;//00000000000000000000000000000011int b = -5;//10000000000000000000000000000101 --- b的原码//11111111111111111111111111111010 --- b的反码//11111111111111111111111111111011 --- b的补码int c = a | b;//00000000000000000000000000000011 --- a的反码//11111111111111111111111111111011 --- b的补码//11111111111111111111111111111011 --- a|b//10000000000000000000000000000100 --- 反码//10000000000000000000000000000101 --- 原码 --- -5printf("%d\n", c);return 0;
}

在这里插入图片描述

按 位 异 或

定 义

在 C 语 言 里,按 位 异 或 是 一 种 常 用 的 位 操 作,借 助 ^ 运 算 符 来 实 现。

原 理

         按 位 异 或 操 作 会 对 两 个 操 作 数 的 对 应 二 进 制 位 进 行 逐 位 比 较,当 两 个 对 应 位 不 同 时,结 果 的 该 位 为 1;当 两 个 对 应 位 相 同 时,结 果 的 该 位 为 0。

口 诀

相 同 为 0,不 同 为 1

口 诀 解 释

         在 按 位 异 或 操 作 中,会 对 两 个 操 作 数 对 应 的 每 一 对 二 进 制 位 进 行 比 较。当 这 两 个 对 应 的 二 进 制 位 数 值 一 样 时,结 果 的 对 应 位 就 为 0; 当 这 两 个 对 应 的 二 进 制 位 数 值 不 一 样 时,结 果 的 对 应 位 则 为 1。

真 值 表

在这里插入图片描述

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 3;//00000000000000000000000000000011 --- a的补码int b = -5;//10000000000000000000000000000101 --- b的原码//11111111111111111111111111111010 --- b的反码//11111111111111111111111111111011 --- b的补码int c = a ^ b;//00000000000000000000000000000011 --- a的补码//11111111111111111111111111111011 --- b的补码//11111111111111111111111111111000 --- a ^ b//10000000000000000000000000000111 --- 反码//10000000000000000000000000001000 --- 原码 --- -8printf("%d\n", c);return 0;
}

在这里插入图片描述

使 用 按 位 异 或 交 换 两 个 数 的 值,不 使 用 临 时 变 量

下 面 展 示代 码 示 例

#include <stdio.h>
int main()
{int a = 10;int b = 20;scanf("%d %d", &a, &b);a = a ^ b;b = a ^ b;a = a ^ b;printf("%d %d\n", a, b);return 0;
}

逻 辑 反 操 作

定 义

         在 C 语 言 里,逻 辑 反 操 作 也 被 叫 做 逻 辑 非 操 作,使 用 逻 辑 非 运 算 符 ! 来 实 现。

原 理

         逻 辑 反 操 作 是 一 种 单 目 操 作 符,它 作 用 于 一 个 布 尔 值(在 C 语 言 里,非 零 值 表 示 真,零 值 表 示 假),把 真 变 为 假,把 假 变 为 真。具 体 规 则 如下:
若 操 作 数 为 非 零 值(即 真),逻 辑 反 操 作 的 结 果 为 0(即 假)。
若 操 作 数 为 0(即 假),逻 辑 反 操 作 的 结 果 为 1(即 真)。

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int flag = 0;printf("%d\n", flag);printf("%d\n", !flag);return 0;
}

在这里插入图片描述

负 值 操 作

减 法 运 算 符

         “-” 操 作 符 可 用 于 两 个 数 值 间 的 减 法 运 算。它 能 处 理 整 数、浮 点 数 等 不 同 类 型 的 数 据。

下 面 展 示代 码 示 例

#include <stdio.h>int main() 
{int a = 10;int b = 5;int result = a - b;printf("%d\n", result);return 0;
}

在这里插入图片描述

负 号 运 算 符

“-” 操 作 符 还 能 作 为 负 号 运 算 符,用 来 改 变 一 个 数 值 的 正 负 性。

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 10;printf("%d\n", a);printf("%d\n", -a);
}

在这里插入图片描述

复 合 赋 值 运 算 符

         “-” 可 以 和 “=” 结 合 形 成 复 合 赋 值 运 算 符 “ -= ”,其 作 用 是 从 变 量 里 减 去 一 个 值,再 把 结 果 赋 给 该 变 量。

下 面 展 示代 码 示 例

#include <stdio.h>int main() 
{int num = 10;num -= 3; // 等价于num = num - 3;printf("%d\n", num);return 0;
}

在这里插入图片描述

按 位 取 反

定 义

         在 C 语 言 里,按 位 取 反 操 作 符 是 ~,它 属 于 单 目 操 作 符,也 就 是 只 需 一 个 操 作 数。该 操 作 符 会 对 操 作 数 的 每 一 位(包 含 符 号 位)。 进 行 取 反 操 作,即 把 0 变 为 1,把 1 变 为 0。

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 10;//00000000000000000000000000001010 --- a的补码//11111111111111111111111111110101 --- 按位取反//10000000000000000000000000001010 --- 取反//10000000000000000000000000001011 --- 原码 --- -11printf("%d\n", ~a);return 0;
}

在这里插入图片描述

逻 辑 与

定 义

         在 C 语 言 中,逻 辑 与 操 作 是 一 种 布 尔 运 算,属 于 二 元 运 算 符,也 就 是 需 要 两 个 操 作 数。使 用 && 运 算 符 来 实 现。

原 理

         逻 辑 与 操 作 用 于 对 两 个 布 尔 表 达 式 进 行 运 算,只 有 当 两 个 表 达 式 的 值 都 为 真(在 C 语 言 里,非 零 值 表 示 真,零 值 表 示 假)时,整 个 逻 辑 与 表 达 式 的 结 果 才 为 真;只 要 有 一 个 表 达 式 的 值 为 假,结 果 就 为 假。

真 值 表

在这里插入图片描述

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 0;int b = 5;if (a && b){printf("hehe\n");}return 0;
}

在这里插入图片描述

结 果 解 释

         这 段 代 码 中,因 变 量 a 为 0、b 为 5,二 者 按 位 与(&)结 果 在 逻 辑 判 断 中 为 假,致 使 if 条 件 不 成 立,其 语 句 块 代 码 不 执 行,程 序 无 输 出。

短 路 特 性

         逻 辑 与 运 算 符 具 有 短 路 特 性。也 就 是 说,当 计 算 表 达 式 1 && 表 达 式 2 时,如 果 表 达 式 1 的 值 为 假,那 么 就 不 会 再 计 算 表 达 式 2,因 为 无 论 表 达 式 2 的 值 是 什 么,整 个 逻 辑 与 表 达 式 的 结 果 都 已 经 确 定 为 假。

下 面 展 示代 码 示 例

#include <stdio.h>
int main()
{int i = 0, a = 0, b = 2, c = 3, d = 4;i = a++ && ++b && d++;//左边为假,右边不计算printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);a = 1, b = 2, c = 3, d = 4;i = ++a && ++b && d++;//一直计算到真printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);return 0;
}

在这里插入图片描述

逻 辑 或

定 义

         在 C 语 言 中,逻 辑 或 操 作 是 一 种 布 尔 运 算,属 于 二 元 运 算 符,也 就 是 需 要 两 个 操 作 数。使 用 || 运 算 符 来 实 现。

原 理

         逻 辑 或 操 作 用 于 对 两 个 布 尔 表 达 式 进 行 运 算,只 要 两 个 表 达 式 中 有 一 个 的 值 为 真(在 C 语 言 中,非 零 值 代 表 真,零 值 代 表 假),整 个 逻 辑 或 表 达 式 的 结 果 就 为 真;只 有 当 两 个 表 达 式 的 值 都 为 假 时,结 果 才 为 假。

真 值 表

在这里插入图片描述

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 0;int b = 5;if (a || b){printf("hehe\n");}return 0;
}

在这里插入图片描述

结 果 解 释

         这 段 代 码 中,因 变 量 a 为 0、b 为 5,二 者 逻 辑 或(||)结 果 在 逻 辑 判 断 中 为 真,if 条 件 成 立,其 语 句 块 代 码 执 行,程 序 有 输 出。

短路特性

         逻 辑 或 运 算 符 具 有 短 路 特 性。也 就 是 说,当 计 算 表 达 式 1 | | 表 达 式 2 时,如 果 表 达 式 1 的 值 为 真,那 么 就 不 会 再 计 算 表 达 式 2,因 为 无 论 表 达 式 2 的 值 是 什 么,整 个 逻 辑 或 表 达 式 的 结 果 都 已 经 确 定 为 真。

下 面 展 示代 码 示 例

#include <stdio.h>
int main()
{int i = 0, a = 0, b = 2, c = 3, d = 4;i = a++ || ++b || d++;//表达式1为假,表达式2为真,后边不计算printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);a = 1, b = 2, c = 3, d = 4;i = ++a || ++b || d++;//左边为真,右边不计算printf("a = %d b = %d c = %d d = %d\n", a, b, c, d);return 0;
}

在这里插入图片描述

总 结

         在 逻 辑 与 短 路 特 性 的 表 达 式 中,表 达 式 一 直 计 算 到 真 停 止,如 果 表 达 式 是 假,则 停 止 计 算。在 逻 辑 或 短 路 特 性 的 表 达 式 中,如 果 表 达 式 是 假,则 一 直 计 算,到 真 停 止,后 面 的 表 达 式 不 计 算。

三 目 操 作 符

定 义

         在 C 语 言 里,三 目 操 作 符( 也 叫 条 件 操 作 符)是 一 个 较 为 独 特 的 运 算 符,它 能 实 现 简 单 的 条 件 判 断,使 代 码 更 加 简 洁。

基 本 语 法

条件表达式 ? 表达式1 : 表达式2
  • 条 件 表 达 式:这 是 一 个 布 尔 表 达 式,其 计 算 结 果 要 么 为 真( 非 零 值 ),要 么 为 假( 零 值 )。
  • 表 达 式 1:当 条 件 表 达 式 的 结 果 为 真 时,三 目 操 作 符 会 返 回 该 表达 式 的 值。
  • 表 达 式 2:当 条 件 表 达 式 的 结 果 为 假 时,三 目 操 作 符 会 返 回 该 表 达 式 的 值。

执 行 流 程

  • 首 先 计 算 条 件 表 达 式 的 值。
  • 若 条 件 表 达 式 的 值 为 真,整 个 三 目 操 作 符 表 达 式 的 值 就 是 表 达 式 1 的 值。
  • 若 条 件 表 达 式 的 值 为 假,整 个 三 目 操 作 符 表 达 式 的 值 就 是 表 达 式 2 的 值。

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 0;int b = (a > 5 ? 3 : -3);printf("%d\n", b);return 0;
}

在这里插入图片描述

逗 号 表 达 式

定 义

         在 C 语 言 中,逗 号 表 达 式 是 一 种 较 为 特 殊 的 表 达 式,它 允 许 将 多 个表 达 式 组 合 在 一 起,按 顺 序 依 次 计 算 每 个 子 表 达 式 的 值,最 后 整 个 逗 号 表 达 式 的 值 是 最 后 一 个 子 表 达 式 的 值。

基 本 语 法

表达式1, 表达式2, ..., 表达式n

         其 中,表 达 式 1、表 达 式 2 一 直 到 表 达 式 n 是 任 意 合 法 的 C 语 言 表 达 式,它 们 之 间 用 逗 号 分 隔。

执 行 流 程

         逗 号 表 达 式 的 执 行 顺 序 是 从 左 到 右 依 次 计 算 各 个 子 表 达 式 的 值。也 就 是 说,先 计 算 表 达 式 1,接 着 计 算 表 达 式 2,以 此 类 推,直 到 计 算 完 表 达 式 n。整 个 逗 号 表 达 式 最 终 的 值 就 是 表 达 式 n 的 值。

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 0;int b = 2;int c = (a > b, a = b + 10, a, b = a + 1);printf("%d\n", c);return 0;
}

在这里插入图片描述

逗 号 表 达 式

定 义

         在 C 语 言 中,逗 号 表 达 式 是 一 种 较 为 特 殊 的 表 达 式,它 允 许 将 多 个表 达 式 组 合 在 一 起,按 顺 序 依 次 计 算 每 个 子 表 达 式 的 值,最 后 整 个 逗 号 表 达 式 的 值 是 最 后 一 个 子 表 达 式 的 值。

基 本 语 法

表达式1, 表达式2, ..., 表达式n

         其 中,表 达 式 1、表 达 式 2 一 直 到 表 达 式 n 是 任 意 合 法 的 C 语 言 表 达 式,它 们 之 间 用 逗 号 分 隔。

执 行 流 程

         逗 号 表 达 式 的 执 行 顺 序 是 从 左 到 右 依 次 计 算 各 个 子 表 达 式 的 值。也 就 是 说,先 计 算 表 达 式 1,接 着 计 算 表 达 式 2,以 此 类 推,直 到 计 算 完 表 达 式 n。整 个 逗 号 表 达 式 最 终 的 值 就 是 表 达 式 n 的 值。

下 面 展 示代 码 示 例

#include<stdio.h>
int main()
{int a = 0;int b = 2;int c = (a > b, a = b + 10, a, b = a + 1);printf("%d\n", c);return 0;
}

在这里插入图片描述

总结

       至 此,关 于 C 语 言 的 操 作 符 探 索 暂 告 一 段 落,但 你 的 编 程 征 程 才 刚 刚 启 航。写 代 码 是 与 机 器 深 度 对 话,过 程 中 虽 会 在 语 法、算 法 困 境 里 挣 扎,但 这 些 磨 砺 加 深 了 对 代 码 的 理 解。愿 你 合 上 电 脑 后,灵 感 不 断,在 C 语 言 的 世 界 里 持 续 深 耕,书 写 属 于 自 己 的 编 程 传 奇,下 一 次 开 启 ,定 有 全 新 的 精 彩 等 待。小 编 期 待 重 逢,盼 下 次 阅 读 见 你 们 更 大 进 步,共 赴 代 码 之 约!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/74069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring Boot的公司资产网站的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

零碳工厂能源管理系统的核心技术与应用实践

零碳工厂能源管理系统是一种高效的解决方案&#xff0c;旨在优化能源使用并减少碳排放&#xff0c;以帮助工厂实现低碳或零碳的生产目标。以下是该系统的详细构成和功能&#xff1a; 1. 核心组件 传感器和监测设备&#xff1a;用于实时监测工厂内的能源使用情况&#xff0c;包…

美摄接入DeepSeek等大模型,用多模态融合重构视频创作新边界!

今年以来&#xff0c;DeepSeek凭借其强大的深度推理分析能力&#xff0c;在AI领域掀起新的热潮。美摄科技快速响应市场需求&#xff0c;迅速接入以DeepSeek、通义千问、商汤、文心一言为代表的大模型&#xff0c;为企业视频创作生产带来全新体验。 传统视频创作面临着同质化、…

【yolo】yolo训练报错,以及解决方案

背景&#xff1a; 刚刚&#xff0c;写了《【yolo】yolo推理报错&#xff0c;以及解决方案》&#xff0c;马上训练就遇到类似的报错。 我对我标注的图像进行了300轮的训练&#xff0c;但是训练完300轮后&#xff0c;报错了。。。 报错信息 300 epochs completed in 0.085 hou…

理解线性动力学中的模态叠加法

线性动力学中的模态叠加方法 模态叠加法是线性动力学中一种有价值的工具&#xff0c;可以有效地确定频域或时域中的系统响应。对于某些类型的线性动力学分析&#xff0c;有必要使用此方法&#xff0c;因此了解该过程对于获得准确的结果至关重要。在本博客中&#xff0c;我们将…

报错 - redis - Unit redis.service could not be found.

报错&#xff1a; Unit redis.service could not be found.Could not connect to Redis at 127.0.0.1:6379: Connection refused解决方法&#xff1a; 检查状态、有必要的话 重新安装 Linux 上查看状态 systemctl status redis显示以下内容&#xff0c;代表正常服务 出现下面…

CMS网站模板定制设计与安全评估

内容概要 现代CMS&#xff08;内容管理系统&#xff09;作为网站建设的核心载体&#xff0c;其模板架构与安全防护体系的协同设计已成为企业数字化转型的关键环节。随着网络攻击向量日益复杂化&#xff0c;基于HTTPS协议的端到端加密部署不仅成为基础安全配置&#xff0c;更直…

【React】useEffect、useLayoutEffect底层机制

目录 useEffect不设置依赖设置空数组&#xff0c;无依赖设置多个依赖返回值是一个函数总结useEffect的使用环境useEffect 中发送请求错误示例用.then获取数据在useEffect创建一个函数 总结 useLayoutEffectuseLayoutEffect 和useEffect区别执行时机&#xff1a;浏览器渲染的关系…

深度解析学术论文成果评估(Artifact Evaluation):从历史到现状

深度解析学术论文成果评估(Artifact Evaluation)&#xff1a;从历史到现状 引言 在计算机科学和工程领域的学术研究中&#xff0c;可重复性和可验证性越来越受到重视。随着实验性研究的复杂性不断增加&#xff0c;确保研究成果可以被其他研究者验证和构建变得尤为重要。这一需…

游戏MOD伴随盗号风险,仿冒网站借“风灵月影”窃密【火绒企业版V2.0】

游戏MOD&#xff08;即游戏修改器&#xff09;是一种能够对游戏进行修改或增强的程序&#xff0c;因其能够提升游戏体验&#xff0c;在玩家群体中拥有一定的市场。然而&#xff0c;这类程序大多由第三方开发者制作&#xff0c;容易缺乏完善的安全保障机制&#xff0c;这就为不法…

QT二 QT使用generate form 生成常用UI,各种UI控件

一 。没有使用general form 和 使用 general form 后&#xff0c;file层面和代码层面的不同比较 file层面的不同 代码层面的不同&#xff0c; 在 使用了general form之后&#xff0c;在主界面的构造方法中&#xff0c;使用ui->setupUi(this),就完成了所有UI的处理。 而之…

从PGC到AIGC:海螺AI多模态内容生成系统架构一站式剖析

海螺AI&#xff1a;基于多模态架构的下一代认知智能引擎 海螺AI核心模型架构基础模型&#xff1a;abab-6.5语音模型&#xff1a;speech-01 视频生成管线关键子系统快速接入海螺AI 蓝耘MaaS平台什么是MaaS平台&#xff1f;支持的大模型蓝耘搭载海螺AI的优势 实战应用教程如何注册…

二分查找上下界问题的思考

背景 最近在做力扣hot100中的二分查找题目时&#xff0c;发现很多题目都用到了二分查找的变种问题&#xff0c;即二分查找上下界问题&#xff0c;例如以下题目&#xff1a; 35. 搜索插入位置 74. 搜索二维矩阵 34. 在排序数组中查找元素的第一个和最后一个位置 它们不同于查找…

算法系列——有监督学习——4.支持向量机

一、概述 支持向量机&#xff08;Support Vector Machine&#xff0c;SVM&#xff09;是一种应用范围非常广泛的算法&#xff0c;既可以用于分类&#xff0c;也可以用于回归。 本文将介绍如何将线性支持向量机应用于二元分类问题&#xff0c;以间隔&#xff08;margin&#x…

【图像处理基石】什么是HDR图片?

1. 什么是HDR图片&#xff1f; HDR&#xff08;高动态范围图像&#xff0c;High Dynamic Range&#xff09;是一种通过技术手段扩展照片明暗细节的成像方式。以下是关于HDR的详细说明&#xff1a; 核心原理 动态范围&#xff1a;指图像中最亮和最暗区域之间的亮度差。人眼能…

现代复古像素风品牌海报游戏排版设计装饰英文字体 Psygen — Modern Pixel Font

Psygen 是一种像素化等宽字体&#xff0c;具有强烈的复古未来主义和网络风格美学。块状的、基于网格的字体采用了早期的计算机界面、街机游戏排版和 ASCII 艺术。 该字体支持拉丁文、西里尔文和希腊文脚本&#xff0c;使其适用于多语言设计。扩展的字符集还具有唯一的符号和方…

MATLAB 控制系统设计与仿真 - 27

状态空间的标准型 传递函数和状态空间可以相互转换&#xff0c;接下来会举例如何有传递函数转成状态空间标准型。 对角标准型 当 G(s)可以写成&#xff1a; 即&#xff1a; 根据上图可知&#xff1a; 约当标准型 当 G(s)可以写成&#xff1a; 即&#xff1a; 根据上图…

【Unity Bug 随记】使用Rider debug功能时Unity Reload Domain卡死问题

使用Rider debug功能时Unity Reload Domain卡死 检查是否使用unity version control版本控制系统&#xff08;VCS&#xff09;&#xff0c;使用的话删除这个包&#xff0c;再尝试&#xff0c;如果能正常断点调试&#xff0c;说明确实是VCS的问题。 我和几个网友都是这个原因…

麒麟银河V10服务器RabbitMQ安装

安装步骤 rabbitMQ依赖于erlang的环境&#xff0c;所以需要先安装erlang&#xff0c;erlang跟rabbitMQ是有版本之间的关联关系的&#xff0c;根据对应的版本去安装下载&#xff0c;保证少出问题。 可以通过官网来查看RabbitMQ和erlang之间的版本对应关系 rabbitMQ和erlang之间…

Flutter 学习之旅 之 flutter 使用 SQLite(sqflite) 实现简单的数据本地化 保存/获取/移除/判断是否存在 的简单封装

Flutter 学习之旅 之 flutter 使用 SQLite&#xff08;sqflite&#xff09; 实现简单的数据本地化 保存/获取/移除/判断是否存在 的简单封装 目录 Flutter 学习之旅 之 flutter 使用 SQLite&#xff08;sqflite&#xff09; 实现简单的数据本地化 保存/获取/移除/判断是否存在…