C语言学习篇【常量】

在C语言中,基本类型数据分为三类:整数、浮点数和字符,它们实际上都是常量,分别称为整型常量、浮点型常量和字符型常量。

整形常量

整型常量就是数学中的整数,如10、35、-33、78。整数可以用十进制、十六进制、二进制或八进制表示。

void c5_5() {
	int i = 10;
	printf("%d\n", i);
}

int main(void)
{
	c5_5();

	return 0;
}

变量i定义的是整型,10是整型常量,程序中将整型常量赋给整型变量,合情合理,所以该程序编译、链接、执行都是正确的。但是如果将10改成10.6会怎么样?原理上是错的,但编译的时候不会报错,只会警告。继续单击链接、执行,这时会发现,虽然程序中写的是10.6,但输出的还是10。这是因为当将一个小数赋给一个整型变量时,程序只会将整数部分赋给整型变量,小数部分会被舍弃。

浮点型常量

浮点型常量又叫浮点数,就是数学中的实数,即带小数点的数。在C语言中浮点数有两种表示方法,一种是传统的写法,如3.1415926;另一种是科学计数法,如2.856e3。e后面的3表示指数,2.856e3就表示2.856×103。e也可以写成大写E,两个是一样的。但需要注意的是,字母e(或E)之前必须要有数字,且e(或E)后面的指数必须为整数,如e36、2.1e3.5等都是不合法的形式。此外,如果你要表示0.01,你可以写成1e-2,千万不要写成1e(-2),不要加括号,直接写就行了。在C编程中,科学计数法的表示方法一般不用,但是你要了解。

void c5_6() {
	float i = 1e-2;
	printf("%f\n", i);
}

int main(void)
{
	c5_6();

	return 0;
}

编译的时候会产生一个警告:
在这里插入图片描述
为什么会产生警告呢?不管是写成1e-2还是写成0.01都会产生这个警告。这是因为在C语言中,对于所有的实数,不管是用什么形式的写法,传统的写法也好,科学计数法也好,默认的都是double类型的。double型占8字节,而float型占4字节。所以计算机认为将double型数据赋给float型变量会丢失精度,所以它就会产生一个警告。

上述示例代码运行结果:
在这里插入图片描述

上述示例如果将float改成double警告就消失了。或者改为float i=1e-2F。加F(或f)就表示将这个数当成float来处理。加F(或f)是给float型变量赋值最标准的写法,这种写法在所有编译器中都是能通过的。

但是不管是float还是double, printf中都是%f。可是如果输出浮点数时printf中不小心将%f写成了%d,那结果会怎么样?如果这样的话,那么不管浮点数是多少,输出的都是0。同样,如果输出整数时在printf中不小心将%d写成%f,那么不管整数是多少,输出的都是0.000000。写一个程序看一下:

void c5_7() {
	float a = 7.5;
	int b = 10;

	printf("a = %d\n", a);
	printf("b = %f\n", b);
}

int main(void)
{
	c5_7();

	return 0;
}

在这里插入图片描述
这个涉及浮点数在内存中的存储,整数和浮点数在内存中的存储方式是不同的。浮点数在内存中的存储方式很复杂,但一般用不到。对于学习C语言而言,它就属于次要的知识,不需要掌握。

字符型常量

C语言中字符型常量是用单撇号括起来的一个字符,如字母’a’ 、’ b’ 、’ c’ 、’ L’ 、‘M’ 、’ P’ ……又如符号’? ’ 、’ $’ 、’ @’ 、’ >>’ ……还有一种比较特殊的字符型常量,就是以一个字符 ‘’ 开始的字符序列,又叫“转义字符”
在这里插入图片描述
字符是相对字符串而言的。字符指的是单个字符,如’A’表示字符A。如果写成’AB’就是错误的。因为’AB’不是单个字符,而是两个字符。字符串指的是多个字符的组合。字符串常量要用双引号括起来,即"AB"。

在C语言中,定义存储字符常量的变量要用char,且输入字符常量时printf中要写%c或%C。这里需要注意的是,不是大写的%C就输出大写,小写的%c就输出小写,这与十六进制的%x和%X不一样。十六进制中大写和小写表示的是一样的,但在字符中,大写字母和小写字母是不同的。但是在C语言中没有任何一种数据类型可以直接存储字符串,因为字符串不属于数据类型,所以“char i=“AB”; ”是错的。而在C++、Java中可以。在C语言中,字符串是通过字符数组来存储的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值