C++语言基础Day2

C++语言基础Day2

一、变量和常量

  • 数据类型:告诉编译器这个数据在内存中需要多大的空间
  • 常量:程序中不能改变的量
  • 变量:程序运行中可被改变的量,存在于内存中
  • 定义变量时,必须以字母和下划线开始,不可以用数字开始
  • 变量名不可以取关键字
  • define 定义的是常量 不可以被改变的量
  • const修改的变量不能被修改

在这里插入图片描述

  • 定义:在内存中开辟空间
  • 初始化:定义时赋值
  • 声明:extern 告诉编译器有这个东西,但是这里不开辟空间,没办法赋值
extern short a;// 声明变量a 并没有开辟空间
#include<stdio.h>

int main()
{
	const int a = 10;// const 定义一个常量
	
	printf("%d\n",a);// 把c的值输出 c = a + b
	return 0;
}

二、int类型

打印格式:

  • %d 输出一个有符号的十进制int类型
  • %o 输出八进制int类型
  • %x 输出十六进制的int类型,字母小写形式输出
  • %X 输出十六进制的int类型,字母以大写形式输出
  • %u 输出一个十进制的无符号数

三、数据的输入scanf

 通过scanf语句进行数据的输入,scanf(“%d”,&a);这里表示使用有符号十进制的形式向a的内存地址中输入一个数。

在这里插入图片描述

scanf()函数的读取流程:

  • 首先键盘输入数据进行标准输入文件中(stdin)
  • 然后scanf函数以有符号十进制数据的形式从标准输入文件中读取数据,通过&num进行取地址

四、short、int、long、long long

  • short(短整型) 2个字节
  • int(整形)4个字节
  • long(长整型) windows为四个字节,Linux为四个字节(32位),八个字节(64位)
  • long long (长长整形) 八个字节

注意:

  • 整形数据在内存中所占的字节数和所选取的操作系统有关,long类型的整数长度不可以小于int类型,short类型整数的长度不可以大于int类型
  • 当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器可以自动转化,但是当一个大的类型赋值给一个小的数据类型,就会发生精度丢失

可以使用sizeof测试数据类型的长度

五、整数打印格式

在这里插入图片描述

#include<stdio.h>

int main()
{
	short a = 10;
	int b = 10;
	long c = 10l;// 可以写10 因为会自动转换数据类型
	long long d = 10ll;
	
	printf("sizeof(a) = %u\n",sizeof(a));
	printf("sizeof(b) = %u\n",sizeof(b));
	printf("sizeof(c) = %u\n",sizeof(c));
	printf("sizeof(d) = %u\n",sizeof(d));

	printf("short a = %hd\n",a);
	printf("int b = %d\n",b);
	printf("long c = %ld\n",c);
	printf("long long d = %lld\n",d);

	unsigned short a2 = 20u;
	unsigned int b2 = 20u;
	unsigned long c2 = 20ul;
	unsigned long long d2 = 20ull;

	printf("unsigned short a2 = %hu\n", a2);
	printf("unsigned int b2 = %u\n", b2);
	printf("unsigned long c2 = %lu\n", c2);
	printf("unsigned long long d = %llu\n", d2);


	return 0;
}

六、字符型:char

2.4.1 字符变量的定义和输出

 字符型变量用于存储一个单一的字符,在C语言中使用char进行表示,其中每一个字符变量都会占用一个字节。在给字符型变量赋值的时候,需要使用一对英文半角格式的单引号将其括起来。字符变量实际上并不是把该字符本身放到变量的内存单元中去,而是将该字符对应的ASCII编码放到变量的存储单元中去,char的本质就是一个字节大小的整形。

比如字符’0’存入内存中,存储的是他的ASCII48.

  • 字符’0’ ascii 值是48
  • 字符’1’ ascii值是49
  • ‘A’ ascii值是65
  • ‘B’ ascii值是66
  • ‘a’ ascii值是97
  • 空字符’’ ascii值是32

 因为字符所对应的最大ascii值是127,所以用char类型就可以寸的下所有的字符

char ch = 97;
printf("%c\n",ch);// 打印ch的值(ascii)所对应的字符a
char ch = 'A';// 65

printf("%c\n",ch + 32);// 打印ch的值(ascii)所对应的字符
	char ch = 'a';
	printf("%d\n",sizeof(ch));// 打印1
	printf("%d\n", sizeof('a'));// 打印4  这里看成int类型 c常量97
	// 将字符型数字转换成int类型的数字
	char ch = '8';
	int a = ch - '0';
	printf("a=%d",a);

2.4.2 转义字符

在这里插入图片描述

七、浮点型

 实型变量也可以称为浮点型变量,浮点型变量是用来存储小数数值的。浮点型变量分为两种:单精度浮点数(float)、双精度浮点数(double),但是double型变量所表示的浮点数比float型变量更加精确。

 由于浮点型变量是由有限的存储单元组成的,因此只能提供有限的有效数字,在有效位之外的数字将会被舍掉,将会产生一些误差。

不以f结尾的常量是double类型,以f结尾的常量是float类型

打印时,默认输出六个小数点,同时对于float来说最多只能保证七位有效数字,double类型最多可以保证15位有效数字

	float a = 2.13121545555573;// 最多保证七位有效数字
	double b = 3.144444456346;// 最多保证十五位有效数字
	printf("a = %.8f\n",a);// 保留八位小数
	printf("b = %.8lf\n",b);// 保留八位小数

八、类型限定符

  • extern 声明一个变量,extern声明的变量没有建立存储空间。 extern int a;// 变量没有存储空间
  • const 定义一个常量,常量的值不可以被修改 const int a = 10;
  • volatile 防止编译器优化代码
  • register 定义寄存器变量,提高效率。register是建议性的指令,并不是命令型的指令,如果cpu有空闲的寄存器,那么register就生效,如果没有空闲的寄存器,那么register就无效

九、字符串的格式化输出和输入

9.1 字符串常量

  • 字符串是内存中一段连续的char空间,以’\0’(ASCII = 数字0)结尾
  • 字符串常量是由双引号括起来的字符序列
  • 字符串常量和字符常量不同,每一个字符串的结尾,编译器会自动地添加一个结束标志位’\0’
  • %s用来打印字符串 printf(“%s\n”,“hello”);

注意以下区别:

数字0  内存中存的是0
'0'    内存中存的是48
'\0'   内存中存的是0

除了使用printf(“%c\n”,ch); 输出字符ch之外,还有一个格式化输出字符putchar(ch),没有换行

格式化输出:

在这里插入图片描述

9.2 格式化输出的占位符

m.n 格式 m指的是总的位数 n指的是小数部分位数


	double a = 3.12321;
	printf("%10.4lf\n",a);// 总共输出十位  小数部分4位

	int b = 10;
	printf("%10d\n",b);// 输出十位

	printf("%-10d\n",b);// - 左对齐
	printf("%010d\n",b);// 不足的地方 使用0进行补全

补充:getchar() 函数读取一个字符(从终端)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

少写代码少看论文多多睡觉

求打赏,求关注,求点赞

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

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

打赏作者

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

抵扣说明:

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

余额充值