二、c语言的数据类型和变量

c语言的数据类型和变量

一、数据类型介绍

在这里插入图片描述

1.1 字符型:char

1.2 整形 :int

  • 短整型 :short int
  • 长整型 : long int
  • 更长的整形 : long long int

1.3 浮点型

  • 单精度浮点型 : float
  • 双精度浮点型 : double
  • 更大取值范围的浮点型 : long double

1.4 布尔类型 :专门表示真假的

  • _Bool也可以用bool

1.5 各种数据类型的长度

  • 每一种数据类型都有自己的长度,使用不同的数据类型,能够创建出不同的变量,变量长度的不同存储数据的范围就有所差异。

    1.5.1 sizeof 操作符
    • sizeof是一个关键字,也是一个操作符,专门用来计算sizeof的操作符数的类型长度的,单位是字节。
    • 操作数可以是类型,也可以是变量或者表达式
      sizeof (类型)
      sizeof 表达式
      注 : 这里的表达式是不会计算的
    • size_t是一种类型,是专门为sizeof设计的,就是sizeof返回值的类型
    • sizeof 用 %zd 打印
    • size_t是一种无符号的整型,其实就是unsigned修饰的一种整型类型
1.5.2 数据类型的长度
数据类型长度(单位 : bit)
char1
bool1
short2
int4
long4
long long8
float4
double8
long double8

二、signed和unsigned

  • c语言使用 signed 和 unsigned 关键字修饰字符型和整型的。
  • signed 关键字,表示一个类型带有正负号,包含负值。
  • unsigned 关键字,表示改类型不带正负号,只能表示零和正整数。
  • int 等于 signed int。
  • unsigned 等同于 unsigned int。
  • unsigned的好处 : 同相长度的内存能够表示的最大整数值增大了一倍。
    例如 : 16位的signed short int 的取值范围是 -32768~32767,最大是32767,
    而 unsigned short interest int 的取值范围是 0~65532,最大值增大到65532。

三、数据类型的取值范围

  • 每一种数据类型都有自己的取值范围,也就是存储的数值的最大值和最小值的区间,有了丰富的类型,我们可以在适当的场景的场景选择合适的类型。

四、变量

4.1 变量的创建

c语言中把经常变换的值称为变量,不变的值称为常量

4.2变量的分类

  • 全局变量 : 在大括号外部定义的变量就是全局变量,全局变量的使用范围广,整个工程都是可以使用的。
  • 局部变量 : 在大括号内部定义的变量就是局部变量,局部变量的使用范围比较局限,只能在自己所在的局部范围内使用。

注 : 全局变量和局部变量同名的时候,局部变量优先使用

五、算数操作符 : +,-,*,/,%

  • 为了方便运算,提供了一系类操作符,其中有一组操作符叫 :算数操作符,分别是 +,-,*,/,% 这些操作符都是双目操作符

: 操作符也叫运算符,翻译不同,意思相同。

  • 运算符 / 两端如果是整数,执行的也是整数除法,得到的结构也是整数。如果希望得到浮点数的结果,两个运算数必须至少有一个浮点数
  • 运算符%表示求模(余)即返回两个整数相除的的余值,这个运算符只能用于整数,不能用于浮点数
  • 负数求模的规则 : 结果的正负号由第一个运算数的正负号决定 。

六、赋值运算符 : =和复合赋值

  • 在创建变量的时候给一个初始值叫初始化,在变量创建之后,再给一个值,这叫赋值

6.1 连续赋值

  c = b = a + 3;

6.2 复合赋值

  a =a + 3  可以写成  a+ =3;
 复合赋值符 : += , -= , *= , /= , %= , >>= , <<= , &= , |= , ^=

七、单目操作符 : ++ , – – ,+ ,–

7.1 ++ 和 – –

  • ++是一种自增操作符,分别为前置++和后置++ ,

    • 前置++ : 先+后使用; b = ++b ;
    • 后置++: 先使用后+。 b = b++ ;
  • –是一种自减的操作符,也分为前置–和后置–,

    • 前置- - :先-1,后使用;b =- -b ;
    • 后置- - : 先使用后-1。 b = b- - ;

八、强制类型转换

int a = (int) 3.14 ;//强制把浮点数取整数

九、scanf 和 printf介绍

9.1printf的基本用法

  • 按照一定的格式打印数据。
  • 使用时要包含头文件stdio.h。
9.1.1占位符
  • 所谓占位符,就是这个位置可以用其他值代入。
printf("there are %d apples\n",3);
  • 这里的%d就是占位符,表示这个位置的值要用其他的值来替换,占位符的第一个字符一律为百分号%,第二个字符表示占位符的类型,%d表示这里代入的值必须是一个整数。
  • 文本输出可以使用多个占位符 ,例 :
printf("%s says it is %d o'clock \n",lisi ,21);

输出结果为 : lisi says it is 21 o’clock

9.1.2占位符列举
  • %c : 字符
  • %s :字符串
  • %d : 十进制整数
  • %f :小数
  • %hd : 十进制 short int 类型
  • %ld : 十进制 long int 类型
  • %lu : unsigned long int 类型
  • %Lf : long int 类型浮点数
  • %p : 指针(用来打印地址)
  • %u : 无符号整数
  • %zd : size-t类型
9.1.3 输出格式

printf ()可以定制占位符的输出格式

9.1.3.1 限定宽度

printf ()允许限定占位符的最小宽度

printf("%5d\n",123);//输出为“  123”

%5d表示这个占位符的宽度至少为5位,如不满5位,对应的前面则加空格,输出的默认是右对齐,如希望左对齐,则在%后面加 – 号。

printf("%-5d\n",123);//输出位"123  "
9.1.3.2 总是显示正负号
  • %d前面加个“+”号
printf ("%+d\n",12);//输出位+12
printf ("%+d\n",-12);//输出为-12
9.1.3.3 限定小数位数
printf ("%.3f\n",0.5);//输出为0.500
  • 限定小数位数和限定宽度占位符结合使用
printf ("%5.2f\n",0.5);//输出为“ 0.50”
9.1.3.4 输出部分字符串
printf ("%.5s","abcdefghi");//输出为abcd

9.2 scanf

  • 我们有一个变量,需要给变量输入值,就可以使用scanf函数。
9.2.1 基本用法
  • scanf()用于读取用户键盘输入,他的原型定义在stdio.h。
int a = 0;
scanf ("%d",&a);

注 : 变量前必须加&运算符(指针变量除外),因为scang()传递的不是值,而是地址

  • 读入多个变量的例子 :
int i = 0;
int a = 0;
float c = 0.00;
scanf ("%d%d%f",&i,&a,&c);
9.2.3 占位符
  • %c : 字符

  • %d : 整数

  • %f : float 类型浮点数

  • %lf : double 类型浮点数

  • %Lf : long double 类型浮点数

  • %s : 字符串

  • %[ ] : 在方括号中指定一组匹配的字符,如%[1~9]

    1. 除%c以外,都会自动忽略起首的空白字符,%c不忽略空白字符,返回当前第一个字符,无论该字符是否为空格,如要强制跳过字符前的空白字符,可以写成sacanf (" %c",&i);在%c前面加上一个空格,表示跳过零个或多个空白字符。
    2. %s 它的规则是从当前第一个非空白字符读起,知道遇到空白字符(即空格,换行符,制表符)为止,除非多个%s一起使用
    3. scanf()将字符串读入字符数组时,不会检测字符串是否超过数组长度,为了防止这种情况,使用%s占位符时,应该指定读入字符串的最长长度,即写成%[m]s,其中[m]是一个整数,表示读入字符串的最大长度,后面的字符将被舍弃。例如 :
char m[20] = { 0 };
scanf("%10s", &m);
9.2.4 赋值忽略符
scanf("%d-%-%d",&year,&month,&day)
  • 上述如果输入2024-8-29 就会解读正确,但输入2024/8/29 就会解读失败
  • 为了避免这种情况,scanf()提供了一个赋值忽略符 *,只要把它加在任何占位符的百分号%前面,该占位符就不会返回值,解析后就会被丢弃。例 :
int = year;
int = month;
int = day;
scanf("%d%*c%d%*c%d",&year,&month,&day);
printf("%d %d %d\n",year,month,day);
//这里输入 2024-8-29 或者2024/8/29
//都输出 2024 8 29

%c就是占位符的百分号后面,加入赋值忽略符 *表示这个占位符没有对应的变量,解读后不必返回

在vs 2022中使用scanf()函数时要包含头文件

#define _CRT_SECURE_NO_WARNINGS 1

以上是我上课笔记,如有错误还望给位朋友批评指正,谢谢

  • 24
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值