温馨提示 :
学C语言就像玩《掘地求升》------你以为懂了语法就能通关?
不!编译器会用铁锤教你做人!(╯‵□′)╯︵┻━┻
🐱Part 1:sizeofの跨平台迷惑行为
Q1. 不同环境下sizeof(int)的结果
| 运行环境 | 结果(字节) | 本喵吐槽 | 
|---|---|---|
| 9位单片机 | 2 | 这架构比我爷爷的算盘还古老 | 
| 16位单片机 | 2 | int和short在此拜了把子 | 
| 32位x86 CPU | 4 | 经典永不过时 | 
| 64位x86 CPU | 4 | Intelの祖传秘方 | 
| 32位Windows7 | 4 | 微软:4是我的幸运数字 | 
| 64位Windows7 | 4 | 说好的64位呢?(╯°□°)╯︵┻━┻ | 
冷知识 :
C标准规定
sizeof(int) >= sizeof(short),具体大小全看编译器心情!所以当同事说"我的int有8字节"时------他可能来自火星🌍
🐱Part 2:C语言概念の灵魂拷问
Q1. 三大命名法王の区别
| 类型 | 特点 | 作死案例 | 
|---|---|---|
| 标识符 | 程序员自创的变量名 | int 玛卡巴卡 = 233; | 
| 关键字 | C语言官方认证的VIP词汇 | if(else == 女朋友) | 
| 预定义标识符 | 编译器自带的工具人 | #define 爱情 404 | 
Q2. 运算符の抢座规则
- 左结合 :像食堂打饭排队,从左往右刮油水(
a + b + c → (a+b)+c) - 右结合 :像霸道总裁壁咚,从右往左强势操作(
a = b = 520 → a = (b=520)) 
Q3. 内存世界の户口调查
| 术语 | 人话翻译 | 迷惑行为 | 
|---|---|---|
| 左值 | 有房产证的内存地址 | int *p = &单身狗; | 
| 右值 | 流浪的临时数据 | 1314 = 520 + 794; | 
| 副作用 | 函数偷偷改全局变量 | while(熬夜){头发--;} | 
| 未定义行为 | 编译器の薛定谔警告 | arr[3] = 4;(可能召唤神龙) | 
🐱Part 3:编译过程の双标现场
语法检查 vs 语义检查
| 检查类型 | 类比场景 | 经典翻车案例 | 
|---|---|---|
| 语法检查 | 语文老师纠错别字 | inta a; → "你字都不会写?" | 
| 语义检查 | 女朋友查聊天记录 | int age = "永远18"; → "你当我是傻子?" | 
终极总结(快拿去装X)
            
            
              c
              
              
            
          
          // 表达式 vs 语句 vs 代码块
printf("%d", 1+1);    // 表达式:产出一个值
printf("喵");         // 语句:带分号的完整动作
{ system("shutdown"); } // 代码块:搞事情全家桶