《C Primer Plus》学习笔记—第3章

本文是《C Primer Plus》学习笔记的第三章,详细介绍了C语言中的数据类型,包括整数类型(int、short、long、unsigned、char)、浮点类型(float、double、long double)以及它们的表示方法、打印特性。通过示例程序解释了数据类型的关键概念,如变量、常量、转义序列,并提供了多个编程练习来加深理解。
摘要由CSDN通过智能技术生成

《C Primer Plus》学习笔记

第3章 数据和C

1.示例程序platinum.c

//platinum.c --your weight in platinum
#include<stdio.h>
int main(void)
{
   
	float weight;//你的体重 
	float value;//相等重量白金的价值 
	
	printf("Are you worth your weight in platinum?\n");
	printf("Let's check it out.\n");
	printf("Please enter your weight in pounds: ");
	
	scanf("%f",&weight);
	
	value=1700.0*weight*14.5833;
	printf("Your weight in platinum is worth $%.2f.\n",value);
	printf("Your are easily worth that!If platinum prices drop,\n");
	printf("eat more to maintain your value.\n");
 	
	getchar();
	getchar();
	return 0;
}

输入数字156(按enter键,后续不再提示)后,输出:

Are you worth your weight in platinum?
Let's check it out.
Please enter your weight in pounds: 156
Your weight in platinum is worth $3867491.25.
Your are easily worth that!If platinum prices drop,
eat more to maintain your value.

getchar()函数读取下一个输入字符,因此程序等待用户输入。在这种情况下,键入数字后并按下enter键(发送一个换行符)。然后scanf()读取键入的数字,第一个getchar()读取换行符,第二个让程序暂停,等待输入。
程序中的新元素:
printf()中用%f处理浮点值,%.2f中的.2指定输出的浮点数只显示小数点后面两位。
scanf()函数读取键盘输入,%f说明scanf()要读取键盘输入的浮点数,&weight把输入的值赋给变量weight。
本程序最突出的就是交互性。

2.变量与常量数据

常量:数据在程序运行过程中没有变化。

变量:数据在程序运行过程中可能会改变或被赋值。

3.数据:数据类型关键字

数据类型关键字:int,long,short,unsigned,char,float,double
C90标准加的:signed,void
C99标准加的:_Bool布尔值 _Complex复数 _imaginary虚数

位:存储0或1.
字节:8位。
字:计算机的自然存储单位。

两大基本类型:整数类型,浮点数类型。
整数:没有小数的部分,在计算机内二进制存储。
浮点数:计算机把浮点数分成小数部分和指数部分来表示,分开储存这两部分,范围比整数大,不能表示所有小数。

4.C语言基本数据类型

1.int类型

有符号整型,必须是整数,一般是-32778~32767,16位。
声明int变量:int num;
给变量赋值:num =15;或者通过函数(如scanf()函数)获得值;或者初始化变量,如int num=15.声明为变量创建和标记存储空间,并为其指定初始值。
int常量:C把大多数整型常量视为int类型,非常大的整数除外。
打印int值:可以使用printf()函数打印int类型的值。%d指明了在一行中打印整数的位置。%d称为转换说明,它指定了printf()应使用什么格式来显示一个值。格式化字符串中的每个%d都与待打印变量列表中相应的int值匹配。这个值可以是int类型的变量、int类型的常量或其他任何值为int类型的表达式。

1.演示程序print1.c。
//print的演示
#include<stdio.h>
int main(void)
{
   
	int ten=10;
	int two=2;
	
	printf("Doing it wrong: ");
	printf("%d minus %d is %d\n",ten);//遗漏2个参数
	printf("Doing it right : ");
	printf("%d minus %d is %d\n",ten,2,ten-two);
	
	return 0;
}

使用print()函数时,要确保转换说明的数量与待打印的值数量相等。输出:

Doing it wrong: 10 minus 37814032 is 4198995
Doing it right : 10 minus 2 is 8
2.八进制与十六进制

通常是假定为十进制。
八进制:0前缀表示,转换说明%o显示数字,要前缀一起显示则是%#o;
十六进制:0x或0X前缀表示,转换说明%x显示数字,要前缀一起显示则是%#x(对应0x),%#X(对应0X);

3.进制程序bases.c
//十进制,八进制,十六进制打印十进制100
#include<stdio.h>
int main(void)
{
   
	int num=100;
	
	printf("dec=%d;octal=%o;hex=%x\n",num,num,num);
	//dec十进制,octal八进制,hex十六进制
 	printf("dec=%d;octal=%#o;hex=%#x\n",num,num,num);
	//%#o显示前缀 
	
	return 0;
}

输出如下:

dec=100;octal=144;hex=64
dec=100;octal=0144;hex=0x64
2.其他整数类型
1.short、long、unsigned

C语言提供3个附属关键字修饰基本整数类型:short、long、unsigned。
short int(简写为short):短整型,是有符号类型。
long int(long):长整型,是有符号类型。
unsigned int(unsigned):无符号整型,非负值,16位表示0~65335。
在任何有符号类型前面添加signed,可强调使用有符号类型的意图。
占用空间:short不多于int,long不少于int。
计算机最常见设置:long long64位,long32位,int16或32位,short16位。
int类型的选择:首先考虑unsigned类型,常用于计数。再根据范围选择。
long类型:在值的末尾加L或l(小写的L)后缀,该后缀也可用于八进制和十六进制。
long long:在值的末尾加LL或ll(小写的L)后缀,该后缀也可用于八进制和十六进制。
另外u或U后缀表示unsigned long long,如5ull、10LLU、9Ull。

2.整数溢出:程序toobig.c
//溢出 
#include<stdio.h>
int main(void)
{
   
	int i=2147483647;
	unsigned int j=4294967295;
	
	printf("%d,%d,%d\n",i,i+1,i+2);
	printf("%u,%u,%u\n",j,j+1,j+2);
	
	return 0;
}

输出:

2147483647,-2147483648,-2147483647
4294967295
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值