C语言的基本语法结构

本文介绍了C语言的基本代码结构,包括主函数和stdio库的使用,GCC编译器的作用,以及数据类型(如整数、浮点数、字符和字符串)、进制转换、计算机存储单位、常量和变量的概念。还详细讲解了基本输入输出函数如printf和scanf,以及转义字符的使用。
摘要由CSDN通过智能技术生成

1. 基本代码结构

【1】结构

#include <stdio.h> //头文件:目前记为固定格式:stdio.h 
                                   //main:主函数,一切程序的入口 int:返回值类型需要是一个整数 
int main(int argc, const char *argv[]) 
{
 //{}:main函数的功能代码 
<tab按键>printf("hello world\n"); 
                                //printf函数:将数据打印到终端上 ,必须要包含stdio.h这个头文件 
                                //"hello world" : 指定要输出到终端上的内容 
                                //\n : 转义字符,用于打印的时候换行使用 
                                // ; : 代表一行功能代码的结尾 
return 0;                 // return : 退出main函数,返回一个值:0(0是个整数,与int相对应); 
}

注意:

成对出现的符号,要一起写出来,例如:() {} " " ' '

【2】gcc编译器

gcc xxxx.c 功能:编译.c文件,生成机器所能识别的二进制文件。默认生成的叫a.out文件

运行:./a.out 将a.out二进制文件运行起来。

gcc 01_hello.c -o hello 功能:编译.c文件,生成机器所能识别的二进制文件,将二进制文件命名为hello

【3】代码注释

  1. // 单行代码注释,注释//后面的语句
  2. /* */ 多行注释,可以注释两个符号中间的所有内容
  3. #if 0 #endif

2. 数据类型及变量

【1】进制转换

  1. 十进制:逢十进一,只能显示0,1,2,3,4,5,6,7,8,9
  2. 二进制:逢二进一,只能显示0,1, 二进制以0b开头,十进制2 ---》 二进制: 0b10 0B10
    1. 十进制转二进制:十进制数循环除以2,取余数,直到结果小于2
    2. 二进制转十进制:从右往左:数据*2^(位置),相加

  1. 八进制:逢八进一,只能显示0,1,2,3,4,5,6,7 ---》八进制以0开头,十进制8 ---》 八进制: 010
    1. 十进制转八进制:十进制数循环除以8,取余数,直到结果小于8
    2. 八进制转二进制:一个八进制数可以转换成3个二进制数

  1. 十六进制:逢十六进一,0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f---》16进制以0x开头,十进制16 ---》 16进制: 0x10
    1. 十进制转16进制:十进制数循环除以16,取余数,直到结果小于16
    2. 16进制转二进制:一个16进制数可以转换成4个二进制数

16进制和8进制之间无法直接转换,需要先转二进制或者十进制。

【2】计算机的基本单位

计算机中基本存储单位:比特(bit),只能存储一个0或者一个1

计算机中基本存储单位:字节(byte); 1byte = 8bit

1Kb = 1024byte;

1Mb = 1024Kb;

1Gb = 1024Mb;

1Tb = 1024Gb;

【3】常量数据类型

常量:在程序中无法被改变

1)整型常量: %d

0 1 2 3 4

2)浮点类型常量:%f:保留小数点后6位

3.14 1.0 -1.1

3)字符类型常量:用单引号括出来的一个字符 %c

'a' 'b' '1' '*' '\n'(转义字符) ' '(空格字符) '12':错误:两个字符了

ascii:国际上通用的编码方式,可以查看字符形式与整型形式的相互转换方式。 man ascii -->查看ascii表

'a'-'z':97-122

'A'-'Z':65-90

'0'-'9': 48-56

'\n' : 10l

4)字符串类型常量:用双引号括出来的一个或多个字符 %s

"1" "1234" "abcde" " " "+_*/"

【4】变量基本数据类型

变量:在程序中可以被改变

1)整型变量类型

  1. int 4bytes = 32bit %d
  2. short int 2bytes = 16bit
  3. long int 32位操作系统:4bytes = 32bit %ld

                        64为操作系统:8bytes = 64bit

  1. long long int 8bytes = 64bit %lld

2)浮点变量类型

  1. float 4bytes 单精度 %f
  2. double 8bytes 双精度 %lf

3)字符变量类型

  1. char 1bytes = 8bit

【5】变量

1)申请变量

格式:

数据类型 变量名; int a; int b; int c, d; //同时申请多个相同类型的变量,中间用逗号隔开;

char e; float f;

注意:当只定义变量,没有赋值的时候,该变量空间内存储的是随机值。

2)标识符命名规则

  1. 由数字,字母,下划线(_)组成
  2. 数字不能作为开头:int 1_a 错误的
  3. 严格区分大小写。 int a; int A; 这是两个变量
  4. 不能与关键字重名:由系统定义好的词语符号,有个数函数,用户不能重新定义。
auto break case char const continue default do double else 
enum extern float for goto if int long register return 
short signed sizeof static struct switch typedef union unsighed void

3)变量的初始化及赋值

  1. 初始化:定义变量的同时赋值
  2. 赋值:定义变量完成后,再赋值。

【6】变量的取值范围

1. 修饰数据类型的关键字

  • signed 有符号的,代表该变量中有正负之分的,默认是signed类型 %d
    • signed int a = 10;
    • signed int a = -10;
  • unsigned 无符号的,代表该变量中只能存正数 %u

2. 取值范围(重点)

1)char 类型
  1. 1byte = 8bit。
  2. unsigned char --->无符号的char [0, 2^8-1]

  1. signed char --->有符号的char [-2^7, 2^7-1]

原理:

2)int类型
  1. unsigned int : 无符号:32bit --->[0, 2^32-1]
  2. signed int : 有符号:32bit --->[-2^31, 2^31-1]
3)源码,反码,补码
  1. 源码:人所计算出来的二进制形式
    1. +1 = 0000 0001 源码
    2. -1 = 1000 0001 源码
  2. 反码:源码转换成补码的中间形式
    1. 正数:反码等于源码本身 +1 = 0000 0001 源码 = 0000 0001 反码
    2. 负数:反码等于源码的符号位不动,其余位取反 -1 = 1000 0001 源码 = 1111 1110 反码
  3. 补码:计算机真正存在的二进制形式
    1. 正数:补码等于反码本身 +1 = 0000 0001 源码 = 0000 0001 反码 = 0000 0001 补码
    2. 负数:在反码的基础上+1; -1 = 1000 0001 源码 = 1111 1110 反码 = 1111 1111 补码

1-1 = 0; ==> 1+(-1) ==> 0000 0001 补码 + 1111 1111 补码 = 1 0000 0000===>高位溢出只保留8bit 0000 0000 = 0;

 例:请写出100 和 -100在计算机中的补码形式

例:char型数据在微机中储存值为0xc0,则printf以%d打印值为? -64

3. 基本输入输出函数

【1】单个字符的输入输出

1)putchar

功能:输出单个字符到终端上; 格式: #include <stdio.h> putchar(要输出的字符);

任务:用putchar输出 字符0 - 字符3 《---》 终端输入 man ascii

2)getchar

功能:从终端上获取单个字符; 阻塞函数,阻塞等待从终端获取数据 格式: #include <stdio.h> char c = getchar(); //用getchar()获取到单个字符,赋值给变量c

注意:一次只获取一个字符,

例如终端输入48,getchar函数只会获取到字符4

【2】标准格式化的输入输出

1)printf

功能:格式化输出; 格式: #include <stdio.h> printf("要输出的内容 占位符 转义字符", 数据1, 数据2);

注意:

  1. 双引号中要输出什么数据,就填什么数据,还可以填占位符,转义字符
  2. 占位符的个数,要与双引号后面逗号隔开的数据个数一致,且数据类型要匹配。

2)scanf

功能:格式化输入 格式: #include <stdio.h> scanf("占位符1", &变量名1); ---> 从终端获取1个数据,存储到变量名1指定的空间中 scanf("占位符1 占位符2", &变量名1, &变量名2); ---> 从终端获取2个数据,分别存储到变量名1,变量名2指定的空间中

注意:

  1. 占位符个数要和后面&变量名的个数一致
  2. 变量名前面要加:&符号。,代表将数据存储到变量名所代表的空间内。
  3. %d %f %s不拿空格,换行,制表符
  4. %c 会拿去空格,换行,制表符

scanf吸收垃圾字符

1.getchar()吸收单个垃圾字符

2.严格按照固定格式输入

例如上述例子中,%f和%c中有空格,则在终端输入的时候,就需要在4.5和u中间加上空格。

3.通过抑制字符吸收 %*c

【3】占位符

%d 以有符号的十进制格式输出,int char 
%ld 以十进制格式输出,long int. 
%nd n代表宽度。以n的宽度输出。不足补空格,大于n按实际长度输出。且右对齐 
%3d 以宽度为3的十进制格式输出,如果数据长度<3,在左边补空格,否则按实际长度输出。 
%-nd n代表宽度。以n的宽度输出。不足补空格,大于n按实际长度输出。左对齐 
%-3d 以宽度为3的十进制格式输出,如果数据长度<3,右边补空格,否则按实际长度输出。 
%0nd n代表宽度。以n的宽度输出。不足补0,大于n按实际长度输出。且右对齐 
%03d 
%u 以无符号的十进制格式输出,int char 
%f 以单精度浮点格式输出,float. 默认显示小数点后6位 
%lf 以双精度浮点个数输出,double 
%.mf 保留m位小数,遵循四舍五入 
%n.mf 数据宽度为n,右对齐,且保留m位小数,遵循四舍五入 
%-n.mf 数据宽度为n,左对齐,且保留m位小数,遵循四舍五入 
%g 输出有效字符 
%o 以八进制格式输出 
%x / %X 以十六进制格式输出 
%e 以指数形式输出。 
%p 用于变量地址的输出。& 
%c 以字符格式输出,char 
%s 以字符串格式输出

【4】转义字符

\n 换行,使光标跳转到当前行的下一行的开头, 
\r 回车,使光标跳转到当前行的开头位置; 
\b 回退,使光标回退一格; 
\t 水平制表符; 
\\ 打印\; 
\" 打印“ 
%% 打印%

  • 38
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

0_V_0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值