Linux下c语言的数据类型、常量、变量及运算符

本文详细介绍了C语言中的数据类型(包括基本类型如整型、字符型等,以及构造类型如结构体和联合)、预处理、编译与链接过程,以及常量、变量、运算符(包括算术、关系、逻辑和位运算)的概念和使用。特别关注了十六进制与十进制之间的转换方法。
摘要由CSDN通过智能技术生成

1、数据类型

        分类

(1)数据类型:

                基本类型:

                                整型:signed,unsigned

                                                                        :short  // int long// long long

                                字符型char

                                实型float double(数据大就用e计数法)

                                枚举型 enum

                构造类型:

                                结构体struct

                                共用体union

                指针类型

                空类型 void

                逻辑类型(bool)  true(非0)  false(stdbool.h)

1.预处理:生成.i文件(-E表示只进行预编译)

  gcc -E main.c -o main.i                //打开i文件可以看到头文件的位置以及头文件中的数据类型处理文件的方式,可以借此查看头文件的编译方式,尝试自己写原生头文件;

2.编译:生成.s文件

  gcc -S main.i -o main.s

3.汇编:生成.o文件,即可重定位的二进制文件

  gcc -C main.s -o main.i

4.链接:生成可执行的elf格式文件

gcc main.c -o main
//注意:-127的补码10000001而-128的补码(规定)10000000;

unsigned ch = -1;ch输出255(越界输出)

<limits.h>看各类型的边界值;

(2)常量constant

        八进制0开头;十六进制0x开头;

        整型常量;浮点常量;字符常量;A--ascll  65;a---97;差32;

linux  :man ASCLL 访问ascll码表;

ascll码表中可以用字符做一些加减法得到新的数字或字符;

字符串常量(\0)"";

标识常量#define  XX       xx   

编译器在处理宏的时候是直接替换;所以运算时是替换后再运算;

一个十六进制位最多到15,对应的二进制位为4位,也就是0.5字节;

(3)变量

        字母数字下划线构成,不能数字开头,不能与c关键字冲突;

        register称为寄存器类型(<=4byte),该变量是将变量放入cpu寄存器中,加快运行速度,(对于经常访问的变量);//register int a = 10;寄存器变量没有地址;

        变量的存储类型:

                存储类型 :

                                auto、

                                register、

                                static:默认0,静态储存类型,既可以在函数体内也可以在函数体外、;

 static int a;默认a=0;修饰去全局变量其他文件无法使用;

                                extern:在函数体外说明,其他文件中的函数或程序也可以引用这个变量;

int a = 10;文件1定义a;

extern int a;文件2使用a;编译的时候要两个文件一起编译;

                数据类型  变量名;

 运算符:

        算术运算符:+ 、-、 *、 /、  %、 ++、 --;浮点数不能取余;

        关系运算符:>、>=、<、<=、==、!=;

        逻辑运算符:!、&&、 ||;

        位运算符:~(按位取反)、&(逻辑与)、|(逻辑或)、^(相异为真)、>>(右移)、<<(左移);  (对二进制位处理);a <<3;b>>3;//移位处理;左移一位是*2的关系;

        把unsugned数某一位快速置1;

        把unsugned数的某位快速清0;

        如何利用位运算把一个十进制数转化为一个十六进制数;

        

 赋值运算符:

        +=、-=、*=、/=、%=、|=、^=、>>=、<<=、

特殊运算符:

        三目运算符

        sizeof(变量名和类型都行)

        逗号

c语言运算符的优先级

        

        

        

        

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值