[特殊字符] C语言核心语法全解析:类型限定符、运算符与流程控制

发布于:2025-03-30 ⋅ 阅读:(25) ⋅ 点赞:(0)

目录

  1. 类型限定符
  2. 格式化输入输出
  3. 运算符详解
  4. 类型转换
  5. 流程控制
  6. 函数基础

1. 类型限定符

作用:修饰变量行为

  • const:常量(不可修改)
  • volatile:防止编译器优化
  • register:建议寄存器存储
  • extern:声明外部变量
#include <stdio.h>
int main() {
    const int MAX = 100;  // ✅ 合法
    // MAX = 200;        // ❌ 编译错误
    return 0;
}

2. 格式化输入输出 📝

2.1 printf函数 🖨️

格式符速查表

格式符 说明 示例
%#x 十六进制带前缀 0x45
%+d 显示正负号 +12
%6.2f 宽度6,精度2 123.46
printf("%#x\n", 0x45);     // 输出:0x45
printf("%+6.2f\n", 123.456); // 输出:+123.46
2.2 scanf函数 ⌨️

输入规则

  • 默认以空格/Tab分隔
  • %c会读取空白符
  • 使用%*d跳过输入
int a; char c;
scanf("%d%*c%c", &a, &c);  // 输入"100A" → a=100, c='A'

3. 运算符详解 🧮

3.1 位运算符
运算符 说明 示例
& 按位与 0x23 & 0x45
| 按位或 0x23 | 0x45
<< 左移(乘2) 0x23 << 1
int a = 0x23; 
printf("%#x\n", a << 1);  // 输出:0x46
3.2 条件运算符 ⚖️

语法条件 ? 真值 : 假值
嵌套示例

int max = (a>b) ? a : (b>c) ? b : c;
3.3 sizeof运算符 📏

特性

  • 不执行表达式运算
  • 可计算类型/变量/数组大小
int arr[10];
printf("数组大小:%ld\n", sizeof(arr));  // 输出:40(假设int为4字节)

4. 类型转换 🔄

隐式转换规则

char
int
unsigned
long
float
double

强制转换语法

float x = 3.14;
int y = (int)x;  // y=3

5. 流程控制 🎮

5.1 循环结构

for循环示例(打印9x9乘法表):

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

输出片段

1x1=1  
1x2=2  2x2=4  
...
5.2 跳转控制

goto使用场景(错误处理):

if(error) {
    goto CLEANUP;
}
// ...正常逻辑
CLEANUP:
    free(resources);

6. 函数基础 🛠️

系统函数对比

函数 输入源 输出目标
printf 格式化字符串 标准输出
sprintf 格式化字符串 字符数组
fprintf 格式化字符串 文件流

自定义函数示例

int max(int a, int b) {
    return (a > b) ? a : b;
}

💡 编程贴士

  1. 位运算优化
    a ^= b; b ^= a; a ^= b; 可无需中间变量交换两数。
  2. 避免浮点判等
    fabs(a - b) < 1e-6 替代 a == b
  3. switch穿透特性
    多个case共享同一逻辑时,可省略break

通过系统学习这些核心语法,您已掌握C语言的基础框架! 🚀
疑问交流:欢迎在评论区留言讨论!


网站公告

今日签到

点亮在社区的每一天
去签到