随笔 - 79, 文章 - 9, 评论 - 4, 阅读 - 22231
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

笔记:深入 C 语言和程序运行原理

Posted on   pencilCool  阅读(333)  评论(0编辑  收藏  举报

https://time.geekbang.org/column/article/465228

const 关键字 定义的量 vs 字面量常量

相同的:其值在第一次出现时便被确定,且无法在后续程序中被修改。

通常来说,在 C 语言中,使用 const 关键字修饰的变量定义语句,我们更倾向于称它们为“只读变量”,而非常量。

只读变量与字面量常量的一个最重要的不同点是: 使用 const 修饰的只读变量不具有“常量表达式”的属性.
因此无法用来表示定长数组大小,或使用在 case 语句中。常量表达式本身会在程序编译时被求值,而只读变量的值只能够在程序实际运行时才被得知。并且,编译器通常不会对只读变量进行内联处理,因此其求值不符合常量表达式的特征。误用只读变量和常量会导致编译错误,下面这段代码展示了这类错误:


#include <stdio.h>
int main(void) {
  const int vx = 10;
  const int vy = 10;
  int arr[vx] = {1, 2, 3};  // [错误1] 使用非常量表达式定义定长数组;
  switch(vy) {
    case vx: {  // [错误2] 非常量表达式应用于 case 语句;
      printf("Value matched!");
      break;
    }
  }
}

补码

在四位补码的情况下,对于非负数 3,可以用无符号数 13 (即 16−3) 的位模式来表示有符号数 -3 的位模式
( 记不清规则还不如记住这个例子 )

如何让负数 > 正数
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示