C语言——一分钟了解数据类型与变量

目录

常量

整数类型(int)

有符号整数类型

无符号整数类型 

整型变量的溢出 

 字符类型(char)


常量

在C语言源代码中,有些类型的数据在程序运行前已经预先设定好了的。在整个程序不会发生变化的,称为常量。

#include <stdio.h>
#define a 13
int main()
{
	printf("%d", a);
}

以上类型的都是常见的几个基本类型。

变量

程序中事先声明了的,指定存储类型的内存值可以变化的。程序员通过变量访问或修改内存中的数据,每一个变量代表了一小块内存,而变量是有名字的,程序对变量赋值,可以存储指定类型的称为变量。

#include <studio.h>
int main()
{
    int a;
    char b;
}

以上都可以称之为变量。

常量和变量名的定义规范

只能用数字、字母、下滑线组成的

不能用数字开头

不能用其他特殊的符号

不能使用关键字

#include <stdio.h>
int main()
{
    int _1a; // 成立
    int _a1; // 成立
    int a_1; // 成立
    int a1_; // 成立
    int 1_a; // 不成立
    int 1a_; // 不成立
    int *a_; // 不成立(除了上述说的数字、字母、下滑线组成的都不能成为可命名的变量名)
}

整数类型(int)

        和数学一样,在C语言中,整数时没有小数部分的数。例如1和-1都是整数。像1.0就不是整数。

        用于存储整数的变量称为整数变量。整数类型简称为整型。

        定义整数类型的标识符号为(int)。

        整数数据在内存中以二进制形式存储。按照存储的格式不同,整数可分为有符号无符号整型,分别在int 前面加signed(可忽略)和unsigned来修饰。有符号整数数据在内存中以补码的形式存储。

#include <stdio.h>
int main()
{
	signed int a = 3; // 有符号整形(signed可以省略)
	unsigned int b = 3; // 无符号整形(unsigned不可省略)
	printf("%d\n%d", a, b);
}

有符号整数类型

5种有符号整数类型所占字节数及数据范围

#include <stdio.h>
#include <limits.h> // 里面包含了CHAR_MIN、INT_MIN等宏
int main()
{
	printf("signed char所占字节数:%d,数据范围:[%d|%d]\n", sizeof(signed char), SCHAR_MIN, SCHAR_MAX);
	printf("	   short所占字节数:%d,数据范围:[%d|%d]\n", sizeof(short), SHRT_MIN, SHRT_MAX);
	printf("	   int所占字节数:%d,数据范围:[%d|%d]\n", sizeof(int), INT_MIN, INT_MAX);
	printf("	   long所占字节数:%d,数据范围:[%d|%d]\n", sizeof(long), LONG_MIN, LONG_MAX);
	printf("long long所占字节数:%d,数据范围:[%d|%d]\n", sizeof(long long), LLONG_MIN, LLONG_MAX);
}
signed char所占字节数:1,数据范围:[-128|127]
           short所占字节数:2,数据范围:[-32768|32767]
           int所占字节数:4,数据范围:[-2147483648|2147483647]
           long所占字节数:4,数据范围:[-2147483648|2147483647]
long long所占字节数:8,数据范围:[0|-1]

无符号整数类型 

·

类型同义词
_Boolbool(在stdbool.h头文件种)
unsigned char
unsigned intunsigned
unsigned shortunsigned short int
unsigned longunsigned long int
unsigned long longunsigned long long int

整型变量的溢出 

        在整数的算术运算中,可能会发生溢出(overflow)。当运算的结果不在数据类型所能表示范围中,就会发生溢出。

#include <stdio.h>
#include <limits.h>
int main()
{
	int a, b; // 定义变量
	a = INT_MAX; // 给变量a赋值一个最大值
	b = a + 1; // 在a的值上面加个1,超过最大值
	printf("a: %d\nb:%d", a, b);
}
a: 2147483647
b:-2147483648

        运行结果表示,b的值并不是想象中的2147483648。所以写程序处理数据时,要避免数据溢出的现象,很多出你的思维是没有问题,而是数据的定义上会出现问题。所以会出现程序的bug。

        溢出的现象是未定义的行为,C语言的标准中并未定义有符号溢出的规则。在编程中有必要注意自己这类问题。

 字符类型(char)

char类型用于存储字符(如字母或者标点符号),但是从编译过程来看,其实char类型也是一个标准的整数类型,因为char类型实际上存储的是整型而不是字符。计算机使用的数字编码来处理字符。常用的是ASCII编码

        在ASCII中,存储A实际上存储的是整数65

        标准的ASCII值的范围1~127

#include <stdio.h>
int main()
{
	char ch = 'A';
	printf("字母A的ASCII的值为:%d", ch);
}
字母A的ASCII的值为:65

案例——字符变量定义并用字符常量赋值。

#include <stdio.h>
int main()
{
	char a = 'A';
	char b = 'FATE';
	int x = 'FATE';
	char ch = 97;
	printf("a: %c \nb = %c \nx=%x \nch = %c", a, b, x, ch);
}
a: A
b = E
x=46415445
ch = a

可以从程序上看到,如果字符常量中有多个字符,只有最后8位有效。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

喜欢编程的老白

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值