![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 50
storageLearner
这个作者很懒,什么都没留下…
展开
-
25_#和##操作符使用分析
25_#和##操作符使用分析1、#运算符用法示例:#include <stdio.h>#define STRING(x) #xint main(){ printf("%s\n", STRING(Hello world!)); printf("%s\n", STRING(100)); printf("%s\n", STRING(while)); printf("%s\n", STRING(return)); return 0;原创 2021-06-03 22:55:39 · 129 阅读 · 0 评论 -
24_#pragma的使用
24_#pragma的使用1、#pragma简介2、#pragma message用于自定义编译消息示例分析:#include <stdio.h>#if defined(ANDROID20) #pragma message("Compile Android SDK 2.0...") #define VERSION "Android 2.0"#elif defined(ANDROID23) #pragma message("Compile Android S原创 2021-06-03 22:51:03 · 140 阅读 · 0 评论 -
22_条件编译使用分析 & 23_#error、#warning以及#line的使用分析
22_条件编译使用分析1、条件编译的本质条件编译类似于if…else…,但是其发生在预处理阶段宏定义可以通过命令行进行:####2、条件编译的使用举例示例1:防止头文件重复包含#ifndef _HEADER_FILE_H_#define _HEADER_FILE_H_//source code#endif// test.h#ifndef _TEST_H_#define _TEST_H_#include "global.h" const char* NAME = "tes原创 2021-06-03 22:47:05 · 314 阅读 · 2 评论 -
21_宏定义与使用分析
21_宏定义与使用分析1、C语言中的宏定义与易错点宏定义易错点:#define _SUM_(a, b) (a) + (b)#define _MIN_(a, b) ((a) < (b) ? (a) : (b))#define _DIM_(a) sizeof(a)/sizeof(*a) //计算数组大小int main(){ int a = 1; int b = 2; int c[4] = {0}; int s1 = _SUM_(a, b);原创 2021-06-03 22:36:16 · 410 阅读 · 2 评论 -
19_20_ 编译、链接过程
19_20_ 编译、链接过程1、编译器2、编译链接过程3、预编译4、编译5、汇编6、链接静态链接:由链接器在链接时将库的内容直接加入到可执行程序中Linux下静态库的创建和使用:20-1.c#include <stdio.h>extern char* name();extern int add(int a, int b);int main(){ printf("Name: %s\n", name()); printf("Res原创 2021-06-02 23:08:56 · 94 阅读 · 0 评论 -
17_++和--操作符分析 & 18_三目运算符和逗号表达式
17_++和–操作符分析1、++和–分析++和–操作符分别对应着两条汇编指令;前置:变量自增(减)1,取变量值;后置:取变量值,变量自增(减)1;程序示例:#include <stdio.h> int main(){ int i = 0; int r = 0; r = (i++) + (i++) + (i++); printf("i = %d\n", i); printf("r = %d\n", r); r = (+原创 2021-06-02 22:55:50 · 197 阅读 · 4 评论 -
15_逻辑运算符分析 && 16_位运算符分析
15_逻辑运算符分析1、逻辑与与逻辑或(1)||运算符是从左向右开始计算当遇到为真的条件时停止计算,整个表达式为真;所有条件为假时表达式才为假;(2)&&运算符是从左向右计算当遇到为假的条件停止计算,整个表达式为假;所有条件为真时表达式为真;2、举例说明程序1:#include <stdio.h>int main(){ int i = 0; int j = 0; int k = 0; ++i || ++j &am原创 2021-05-26 21:59:05 · 308 阅读 · 0 评论 -
14_单引号和双引号
14_单引号和双引号1、单引号与双引号的区别C语言中单引号用来表示字符字面量;而双引号用来表示字符串字面量;比如:‘a’表示字符字面量,在内存中占1个字节,‘a+1’表示’a’的ASCII码加1,结果为’b’"a"表示字符串字面量,在内存中占2个字节,"a+1"表示指针运算,结果指向"a"结束符’\0’举例说明:#include <stdio.h>int main(){ char* p1 = 1 ; char* p2 = '1'; char* p3原创 2021-05-26 21:53:45 · 13598 阅读 · 1 评论 -
12_注释符号 && 13_接续符和转义符
12_注释符号1、下面的注释哪一个是错误的?#include <stdio.h>int main(){ int/*...*/i; char* s = "abcdefgh //hijklmn"; //Is it a \ valid comment? in/*...*/t i; return 0;}输出结果为:由结果可知:第四个注释是错误的2、注释规则(1)编译器在编译过程中使用空格替换整个注释原创 2021-05-26 21:36:01 · 389 阅读 · 1 评论 -
11_enum、sizeof、typedef分析
enum、sizeof、typedef分析1、枚举类型的使用方法enum是C语言中的一种自定义类型enum值是可以根据需要自定义的整型值第一个定义的enum值默认为0默认情况下的enum值是在前一个定义值的基础上加1enum类型的变量只能取定义时的离散值代码实践:#include <stdio.h>enum Color{ RED, GREEN ...原创 2021-05-26 19:33:24 · 184 阅读 · 2 评论 -
10_struct和union分析
struct和union分析1、struct空结构体占多大内存?这个答案没有统一标准,与编译器有关,有的会报错,有的会显示为0。代码实践:#include <stdio.h>struct TS{};int main(){ struct TS t1; struct TS t2; printf("sizeof(struct TS) = ...原创 2021-05-25 22:03:16 · 64 阅读 · 2 评论 -
09_const和volatile分析
const和volatile分析1、const只读变量const修饰的变量是只读的,但本质上还是变量const只在编译期有用,在运行期无用代码实践:#include <stdio.h>int main(void){ int cc = 10; printf("cc == %d\n",cc); int *p = (int *)&cc;...原创 2021-05-25 22:03:07 · 75 阅读 · 1 评论 -
08_goto和void分析
goto和void分析1、goto关键字副作用分析goto语句会破坏程序的结构程序示例:#include <stdio.h>#include <malloc.h>void func(int n){ int* p = NULL; if( n < 0 ) { goto STATUS; } p =...原创 2021-05-25 22:02:55 · 70 阅读 · 0 评论 -
07_循环语句
循环语句1、三种循环语句do、while、for的区别do语句先执行后判断,循环体至少执行一次while语句先判断后执行,循环体可能不执行for语句先判断后执行,相比while更简洁2、图解三种循环方式(1)do…while…(2)while循环(3)for循环3、break和continue的区别代码实践:#include <stdio.h>void...原创 2021-05-25 22:02:50 · 91 阅读 · 0 评论 -
06_分支语句
分支语句1、if语句2、switch语句注:case语句中的值只能是整型或者字符型常量3、小结原创 2021-05-25 22:02:43 · 58 阅读 · 0 评论 -
05_变量属性
变量属性C语言定义变量属性的关键字主要有auto、register、static、extern1、auto关键字2、register关键字(1)register关键字指明将局部变量存储于寄存器中;(2)register只是请求寄存器变量,并不一定能成功;(3)register变量必须是CPU寄存器可以接受的值;(4)不能用&运算符获取resister变量的地址;(5)re...原创 2021-05-25 22:02:35 · 115 阅读 · 0 评论 -
04_类型转换
类型转换C语言中类型转换一般有强制类型转换与隐式类型转换两种;1、强制类型转换强制类型转换语法:强制类型转换结果:编程练习:#include <stdio.h>struct TS{ int i; int j;};struct TS ts;int main(){ short s = 0x1122; char c = (c...原创 2021-05-25 22:02:19 · 76 阅读 · 0 评论 -
03_浮点数的秘密
浮点数的密码1、内存中的浮点数表示方法浮点数在内存中的存储方式为:符号位、指数、尾数(小数)2、浮点数存储示例举例:实数8.25在内存中的表示3、编程验证#include &lt;stdio.h&gt;int main(){ float f = 8.25; unsigned int* p = (unsigned int*)&amp;f; prin...原创 2021-05-25 22:02:01 · 97 阅读 · 0 评论 -
02_有符号数与无符号数
有符号数与无符号数1、计算机中的符号位编程实验:#include <stdio.h>int main(){ char c = -5; short s = 6; int i = -7; printf("%d\n", ( (c & 0x80) != 0 )); printf("%d\n", ( (s & 0x8000)...原创 2021-05-25 22:01:41 · 141 阅读 · 0 评论 -
01_基本数据类型
基本数据类型1、什么是数据类型数据类型可以理解为固定内存大小的别名数据类型是创建变量的模子2、什么是变量变量是一段(具体)连续存储空间的别名程序通过变量申请并命名存储空间通过变量名可以使用存储空间3、代码练习(1)类型与变量的关系#include <stdio.h>int main(){ char c = 0; short s = 0; ...原创 2021-05-25 21:37:37 · 100 阅读 · 0 评论