C程序设计——基本变量类型(整数)

前面我们讲过,C语言是结构化的程序设计语言,把问题归结为两部分:数据和对数据的操作。今天要讲的变量,就是C语言中数据的重要部分。

C语言是一个强类型的语言,它要求所有的变量,都必须先定义后使用

C语言的变量定义最基本的形式是:

类型名 变量名 ;

注意:变量名后面的封号不能省略。

因为没有查阅C语言规范,按我个人理解:

1. 由字母、下划线或者数字构成,且首字符只能是字母或者下划线;

2. 变量名几乎没有长度限制;

3. 大小写敏感。

字符型(char)

在大多数的编译器里,char 类型的变量,存放一个8位二进制整数,转化为十进制时,采用补码的规则映射,范围是 -128~127

比如下面这段代码,就在main函数里,定义了一个char 类型的变量 cZiFuXing:

int main(void)
{
    char cZiFuXing ;
}

其中 char 就是类型名称;cZiFuXing是变量名。变量定义了以后,就可以给变量赋值,比如:

int main(void)
{
    char cZiFuXing ;
    cZiFuXing = 100 ;
}

赋值之后,还可以把他打印出来: 

int main(void)
{
    char cZiFuXing ;
    cZiFuXing = 100 ;
    printf("%d\r\n", cZiFuXing);
}

上面代码的运行结果如下:

e6494c5ad919496ba14afc36c3f6828b.png

关于上面这段代码有几点需要说明:

1. “=”是C语言里面的一个运算符,应该读作“赋值”,即:cZiFuXing = 100 ; 的功能是给变量  cZiFuXing 赋值为100,而不是cZiFuXing 等于100 。“等于”在C语言里,用两个等号“==”来表示。

2. 解锁了printf函数的新用法,printf("%d\r\n", cZiFuXing); 其中%d 的涵义是,以10进制整数的形式,打印 cBianHao 的值。

3. 变量名 cZiFuXing ,是一种变量命名的方式,c 表示变量类型是char;ZiFuXing是汉语“字符型”的汉语拼音。

4. 本节char类型的范围是 -128~127,如果给cBianHao 赋值一个超范围的数比如129,cZiFuXing的实际值是 -128~127范围内与129 模256同余的数,就拿129举例,

eq?%5Cbecause%20129%5Cequiv%20%5Cleft%20%28129%20+%20n%20%5Ctimes%20256%20%5Cright%20%29%20%5Cleft%20%28%20n%5Cin%20Z%20%5Cright%20%29%5Cleft%20%28%20mod256%20%5Cright%20%29

当 eq?n%3D%3D-1 时

eq?129%20+%20%5Cleft%20%28%20-1%20%5Cright%20%29%5Ctimes%20256%3D%3D-127

eq?%5Ctherefore%20129%5Cequiv%20%5Cleft%20%28%20-127%20%5Cright%20%29%5Cleft%20%28%20mod256%20%5Cright%20%29

因而下面的代码:

int main(void)
{
    char cZiFuXing ;
    cZiFuXing = 129 ;
    printf("%d\r\n", cZiFuXing);
}

运行结果是:

65158813f5634e62b7c57888be9eb604.png

短整型(short int)

在大多数的编译器里,short int 类型的变量,存放一个16位二进制整数,转化为十进制时,采用补码的规则映射,范围是:-32768 ~ 32767 。

下面这段代码,就是定义了一个短整型的整数,然后赋值100,并且打印:

int main(void)
{
    short int sDuanZhengXing ;
    sDuanZhengXing = 100 ;
    printf("%d\r\n", sDuanZhengXing);
}

运行结果嘛,就如下图:

d8ff663a10a143158c344077dfc255f2.png

短整型跟字符型比,就是长度大了一倍,因此所能表示的十进制整数,从eq?%5Cleft%20%28%20mod256%20%5Cright%20%29增大到了eq?%5Cleft%20%28%20mod%2065536%20%5Cright%20%29,因此如果你给一个短整型赋值40000,因为不在-32768 ~ 32767范围内,当你以以10进制打印时,实际打印的是40000 在 -32768 ~ 32767 范围内模65536的同余数。

eq?%5Cbecause%2040000%5Cequiv%20%5Cleft%20%2840000%20+%20n%20%5Ctimes%2065536%20%5Cright%20%29%20%5Cleft%20%28%20n%5Cin%20Z%20%5Cright%20%29%5Cleft%20%28%20mod65536%20%5Cright%20%29

当 eq?n%3D%3D-1 时

eq?40000%20+%20%5Cleft%20%28%20-1%20%5Cright%20%29%5Ctimes%2065536%3D%3D-25536

eq?%5Ctherefore%2040000%5Cequiv%20%5Cleft%20%28%20-25536%20%5Cright%20%29%5Cleft%20%28%20mod65536%20%5Cright%20%29

所以下面这段代码:

int main(void)
{
    short int sDuanZhengXing ;
    sDuanZhengXing = 40000 ;
    printf("%d\r\n", sDuanZhengXing);
}

运行结果为:

98753c062002467185a7955e9d23704d.png

整形(int)

int 型的长度,比较复杂,因为C标准并没有规定int的长度,只是规定:short int 类型不能比 int 类型长,所以,编译器在实现int的时候就有点放飞自我了,有的编译器(比如我上学时用的 TubroC和 keil 51)中就是16位二进制数;有的编译器(比如 gcc)中就是32位二进制数。当然不论16位还是32位,转化为十进制时,采用补码的规则映射。32位二进制数,映射为十进制数的范围比较大,不需要记住,因此这里就不写了。如果感兴趣,可以自行百度。

不论 int型16位还是32位,因为它长度合适且范围够大,因此是编程时,最常用的整数数据类型。

下面这段代码:

int main(void)
{
    int iZhengXing ;
    iZhengXing = 40000 ;
    printf("%d\r\n", iZhengXing);
}

当int 型为32位时,运行结果如下:

863a6ad54e8a4c47ad3ea26ec93aa3c9.png

长整型(long int)

C标准规定,‌long int类型不能比int类型短,在大多数的编译器里,long int 类型的变量,存放一个32位二进制整数,转化为十进制时,采用补码的规则映射 。

下面这段代码:

int main(void)
{
    long int lChangZhengXing ;
    lChangZhengXing = 40000 ;
    printf("%d\r\n", lChangZhengXing);
}

运行结果为: 

3f6c2c006bb3471998f3bfb203712da7.png

超长整形(long long int)

在大多数的编译器里,long long int 类型的变量,存放一个64位二进制整数,转化为十进制时,采用补码的规则映射 。

下面这段代码:

int main(void)
{
    long long int llChaoChangZhengXing ;
    llChaoChangZhengXing = 40000 ;
    printf("%d\r\n", llChaoChangZhengXing);
}

运行结果为: 

e4dd100031d64fd1bd6a6d0860895a2e.png

关于变量名

如果按照C语言的规范,变量名是可以随便起的,但在实际应用时,还是要做到见名知意。比如您定义某个 int 型变量,是要存学号,应该命名:iXueHao 。这样不仅仅是为了别人能看懂,也是为了自己能看懂。具体是用英文单词还是汉语拼音,这个要看个人的英语水平,英语达到母语水平,就用英文单词,汉语达到母语水平,就用汉语拼音。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

十三香炖猪肉

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

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

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

打赏作者

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

抵扣说明:

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

余额充值