栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言学习第三章——顺序程序设计

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言学习第三章——顺序程序设计

转义字符
常量分类:
(1)字面常量(直接常量):数值常量(分为整型常量和浮点型常量),字符串常量和字符常量

#include
int main(void){
	//1.整型常量
	printf("%dn",234);
	//2.浮点型常量
	printf("%lf,%lfn",3.24,3e-2);	//3e-2	代表3的10的-2次方 
	//3.字符串常量
	printf("%s","%dabcn");		//字符串使用的是格式说明符为%s,输出:%dabc 
	printf("%%dabcn");		//在printf格式字符串中输出“百分号”,需要再加一个“百分号”,输出:%dabc 
	//4.字符型变量		字符也是以整型方式存储在内存中的 
	printf("%c,%dn",'a','a'); 		//普通字符常量 输出a,97
	
	//转义字符 
	printf("%c,%c,%c,%cn",'\',''','?','"');	//可显的转义字符 输出:,',?," 
	printf("a");		//输出一个声音 		其中'a'会产生声音或视觉信号 
	printf("1111babcn");		//输出:111abc 	其中'b'是退格符 将当前位置后退一个字符 
	printf("2222r3333n");		//输出:3333 	其中'r'是回车符 将当前位置滚回到本行开头 
	printf("4444t5555n");		//输出:4444	5555 		其中't'是水平制表符(tab)将当前位置移到下一个tab位置上 
	printf("101102103n");		//输出:ABC 		把8进制的101,102,103转成十进制则为65,66,67 分别对应了'A','B','C' 
	printf("x41n");		//输出:A 		16进制的x41=4x16^1+1x16^0=65 
	return 0; 
} 
//'f'换页	
//'v'垂直制表符

(2)符号常量
(3)常变量

#include
//1.符号常量		只存在于预编译阶段,编译阶段就不存在了,经过预编译后,全部变为字面变量 
#define PI 3.14
#define ID 101
#define CH 'A'
#define S "haha" 
int main(void){
	printf("%lf,%d,%c,%sn",PI,ID,CH,S);		//输出:3.140000,101,A,haha
//2.常变量	C99中新增内容
	const int a=45;		//常变量必须在定义时初始化,初始化之后其值不可以被修改
	//const int b; 		//error未指定初值 
	//a=90;		//error变量的值不可以被修改 
	return 0; 
} 

整型
(一)补码:整型以补码的形式存放
(1)一个正数的补码是此数的二进制形式。
求一个正整数的二进制:除以2,直至商为o,余数倒数排序。
(2)一个负数的补码,先求其绝对值的补码,然后该补码所有位取反,所得之数最后加1。
(3)0的补码,所有位全都是0
注意:在存放整型的存储单元中最左边一位是用来表示符号的。
8位二进制补码所代表的整数:自然数0-127,负数-128-1
n位:-2n——2n-1

(二)整型数据的存储空间及范围
(1)Turbo C中 int 是2个字节。VC ++6.0中 int 是4个字节。C标准没有具体规定各种数据类型所占用储存单元的长度,这是由各编译系统自行决定的。

注意:只有整型〈包括字符型〉数据可以加 signed 或 unsigned 修饰符,实数型不能加;对无符号整型数据用 %u 格式输出。C99新增的整型类型有 long long 和 bool(布尔型)


注意:黑色的格式声明 scanf 可用,黑色和红色的格式声明 printf 可用。

整型常量的类型转换

#include
int main(void){
	//1.定义整型变量 ——带符号整型 ——signed + 整型关键字 + int + 变量名(其中 signed 和 int 可省)
	short a = 1;		//与short int a = 1; 和 signed short int a = 1; 和 signed short a = 1;等价 
	int b = 2;
	long c = 3;
	long long d = 4;	//long long 是 C99 中新增的内容,有些编译器还未实现此功能,会报错 

	//2.定义整型变量 ——无符号整型 ——unsigned + 整型关键字 + int + 变量名(其中int可省)
	unsigned short e = 5;	//与unsigned short int e = 5;等价 
	unsigned int f = 6;
	unsigned long g = 7; 
	
	//3.求一个数据类型或者数值所占的字节数 ——使用sizeof运算符,注意他不是个函数,一般我们习惯对它的操作数加个圆括号(sizeof后如果是关键字必须加个圆括号否则报错 
	printf("%d,%d,%dn",sizeof(short),sizeof(int),sizeof 5);	//输出:2,4,4 
	
	//4.整型数据输出10进制数,所使用的格式声明
	printf("%hd,%d,%ldn",a,b,c);		//与printf("%hi,%i,%lin",a,b,c);等价 
	printf("%hu,%u,%lun",e,f,g); 
	
	//5.整型数据输出8进制或16进制数,所使用的格式声明
	printf("%o,%x,%X,%#x,%#Xn",123,123,123,123,123);		//输出:173,7b,7B,0x7b,0x7B
	
	//6.scanf函数中不可以使用带"#"的格式字符
	scanf("%#x",&b);
	printf("%dn",b);		//随便输入一个16进制数,scanf函数会因为错误而终止。所以并未把任何值赋给b,所以最终输出b的值还是为2
 
 	//7.隐式数据类型转换 ——长 赋 短,截断 
	unsigned short us = -1;		//"长的"整型数据赋给"短的"整型数据时,会只将低几位赋给"短的"整型数据
	printf("%hu,%hdn",us,us);	//输出65535,-1
	
	//8.隐式数据类型转换 ——"无符短" 赋 "长",先把"短的"全部内容复制到"长的"低几位,"长的"高几位填0
	unsigned int ui = us;
	printf("%un",ui);		//输出65535
	
	//9.隐式数据类型转换 ——"带符短" 赋 "长",先把"短的"全部内容复制到"长的"低几位,如果"短的"是自然数,"长的"高几位填0,否则 1 
	short ss = -1;
	ui = ss;
	printf("%un",ui);		//输出4294967295
	
	ss = 1;
	ui = ss;
	printf("%un",ui); 		//输出1
	
	//10.隐式数据类型转换 ——等长,则保留原有补码
	ui = -1;
	printf("%un",ui);  	//输出4294967295
	
	//11.整型常量 ——显示数据类型转换 
	printf("%u,%ld,%lun",1U,1L,1UL);		//1U ——unsigned int类型,1L ——long类型,1UL ——unsigned long类型 	1,1,1
	
	//12.整形数据的强制数据类型转换 ——(数据类型)该处的圆括号为强制数据类型转换符,是一个单目运算符 
 	printf("%hu,%dn",(unsigned short)-1,(int)ui);		//65535,-1
	return 0; 
}

字符型数据
(一)字符是以整数形式(ASCII码)存放在内存单元中。ASCII共128个字符(也就是说最多用7位就可以表示)。
一个小写字母比其大写字母的ASCII码大32。

(二)字符型数据的存储空间和值

注意:
1.C99 把字符型数据作为整型类型的一种。
2.在使用有符号字符型变量时,允许储存的值为负数,但是字符的代码不可能是负值,所以在存储字符时只用到了0 — 127这一部分。

#include
int main(void){
	//1.定义字符型变量
	signed char sc;
	unsigned char uc;
	char ch;		//在vc++中,char类型的变量是signed char类型的,在其他的编译器中char类型的变量可能是unsigned char类型的
	printf("%d,%d,%dn",sizeof(sc),sizeof(uc),sizeof(ch));		//1,1,1 
	
	//2.分析下段代码的运行结果
	uc = -1;
	ch = -1;
	printf("%d,%dn",ch,uc);		//-1,255 
	 
	return 0; 
}

getchar和putchar函数

#include		//该头文件有getchar和putchar函数的函数声明 
void f1(void){			//从键盘读入一个字符并输出 
	char ch = getchar();		//返回类型为int型,返回值为用户输入的ascⅡ码,出错返回-1
	putchar(ch);		//putchar向屏幕输出一个字符 
}
void f2(void){			//从键盘读入3个字符并输出 
	putchar(getchar());
	putchar(getchar());
	putchar(getchar());
} 
int main(void){
	//f1();
	f2();
	 
	return 0;
}

浮点型数据
包括:单精度浮点型,双精度浮点型,长双精度浮点型,复数浮点型

(一)规范化的指数形式,把小数部分中小数点前的数字为0,小数点后第一位数不为0。如:0.314159e1 就是3.14159 的规范化的指数形式。

(二)实数储存空间及范围(Turbo C 中 long double 占16个字节,yc++6.0中占 8个字节)

注:从数值的左边第一个不为 0 的数字起,一直数到这个数字结束,中间的数字叫这个值的有效数字(如 0.618 的有效数字有三个,分别是 6,1,8)

#include
int main(void){
	//1.定义实型变量 ——当把一个"长的"浮点型教据赋给一个较"短的"浮点型变量时,可能造成精度的损失。而且在有的编译器中会出现警告
	float a = 1.1F;		//1.1F表示1.1是个float型数据 
	double b = 1.1;		//默认情况下,凡是小数都是double型 
	long double c = 1e-8L;		//1e-8L是个long double的数据 
	printf("%d,%d,%dn",sizeof(1.1F),sizeof(1.1),sizeof(1e-8L)); 	//4,8,8 
	
	//2.实型数据在格式化输入输出时所使用的格式声明 ——默认情况下使用带F和带e的格式声明只输出小数点后6位(第7位四舍五入)
	//小数形式
	printf("%f,%lf,%Lfn",a,b,c);		//输出1.100000,1.100000,-0.000000 
	//指数形式 
	printf("%e,%le,%LEn",a,b,c);		//输出1.100000e+000,1.100000e+000,-1.041128E-097
	//小数或者指数形式(哪一种形式简短就用哪一种形式) 
	printf("%g,%lg,%LGn",a,b,c);		//输出1.1,1.1,-1.04113E-097 
	return 0;
} 

printf用到的格式附加字符

//格式声明 - % 格式附加字符 格式字符	%lf 
#include
int main(void){
	printf("%5dn",-12);
	printf("%5cn",'a');
	printf("%5snn","abcd");
	
	printf("%-5dAnn",-12);
	
	printf("%7.2lfn",12.345); 
	printf("%7.lfn",12.345); 	//%7.lf和%7.0lf等价 
	printf("%.5lfn",12.345);
	printf("%11lfn",12.345);
	printf("%-11lfn",12.345);
	return 0;
} 


scanf函数的注意事项

//scanf函数中不可以使用#,-,m.n的格式附加字符(m, n属于自然数),可以使用域宽的格式附加字符
#include
int main(void){
	int a;
	
	
	double b;
	scanf("%7.2d",&b);
	printf("%lfn",b);
	char ch;
	while((ch = getchar())!='n')
		putchar(ch);
	putchar('n');
	return 0;
} 

运算符2

#include
int main(void){
	int i = 1,j = 4;		//前自减运算符它表达式的值是该变量减1之后的值,后自减运算符它表达式的值是该变量没有被减1之前的值
	printf("%d,%dn",--i,j--);		//0,4
	printf("%d,%dn",i,j);		//0,3
	//printf("%dn",--(i+j)); 		//error 自增自减运算符不能用于一个数值,只能用于一个变量
	i = 1;j = 4;
	printf("%dn",i+++j);	//vc++中i+++和(i++)+j等价,但在其他的编译器上也可能和i+(++j)等价,对于不可移植的操作我们应该尽量避免使用 
	
	int a;
	printf("%dn",sizeof((double) a));		//8	(double) a是把a这个数值表达式转化成double型数据,而不是把a变量转化成double型变量
	printf("%dn",sizeof(a)); 		//4 
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/457196.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号