C语言基础知识
C语言基础知识
LiQiWenC语言基础知识(不定时更新)
进制
| 表示方式 | 进制 | 备注 |
|---|---|---|
| 0x00 | 16进制 | 以0x开头 |
| 0b00 | 2进制 | b可以大写,并不是全部编译器都都支持2进制数据 |
| 00 | 10进制 | |
| 015 | 8进制 | 8进制以数字0开头 |
二进制运算符
| 运算符 | 功能 | 备注 |
|---|---|---|
| ~ | 按位取反 | 对数的每个二进制位取反 |
| & | 按位与 | 对两个数的二进制位执行逻辑与操作 |
| | | 按位或 | 对两个数的二进制位执行逻辑与操作 |
| ^ | 按位异或 | 对两个数的二进制位执行逻辑异或操作 |
| << | 左移运算符 | 将一个数的二进制位向左移动指定位数,低位补0 |
| >> | 右移运算符 | 将一个数的二进制位向右移动指定位数 |
运算符优先级
- 按位取反(
~)的优先级高于逻辑运算符(如&、|、^)。 - 移位运算符(
<<和>>)的优先级低于算术运算符(如+、-)。
三元运算符
三元运算符(?:)是 C 语言中的一个简洁的条件运算符,语法如下:
1 | condition ? expression1 : expression2; |
相当于:
1 | if (condition) { |
宏
C 语言中的 宏(Macro) 是一种 预处理器指令,在编译源代码之前,预处理器会对代码中的宏进行替换、展开。宏的使用可以大大提高代码的灵活性和可维护性,但用得不好也容易出问题。
宏的分类
在C语言中宏分为了对象宏 、函数宏、条件编译宏
对象宏
相当于文本替换,一般用来定义常量。
1 |
在预处理阶段,在代码中遇到PI,就会被替换为3.14159
函数宏
类似函数,但是本质为文本替换,用于简单计算。
1 |
它并非直接调用函数,而是在编译阶段将**MAX(a,b)直接展开并替换为((a) > (b) ? (a) : (b))**。
条件编译宏
根据宏的定义与否,选择性编译代码。
1 |
|
- **
#define: ** 定义一个宏。 - **
#ifdef: ** 如果定义了宏,编译里面的内容。 - **
#ifndef: ** 如果没有定义宏,编译里面的内容。 #undef: 取消定义宏。#if: 如果表达式的结果为真,编译后续代码。#elif: 在 #if 或 #ifdef 判断失败时,判断其他条件。#else: 如果 #if 、 #ifdef 、**#ifndef** 的条件不成立测编译后续代码#endif: 结束条件编译块


