C语言自学编程(数据类型) —— Day03 关键字、常量、变量、整型、关键字sizeof 笔记

本文是C语言自学笔记,介绍了数据类型中的关键字、常量、变量、整型以及sizeof关键字的用法。讲解了常量的定义方式、变量的定义规则和内存分配、整型数据的种类及其在不同操作系统下的字节数差异,以及无符号数的特点。此外,还详细阐述了sizeof关键字用于计算数据类型长度的应用。
摘要由CSDN通过智能技术生成

数据类型

2.1常量与变量

2.1.1关键字

C语言的关键字共32个
|数据类型关键字||

charshortint
unsignedsignedstruct

|控制语句关键字|

ifelseswitch
dowhilebreak

|存储类关键字|

autoexternregister

|其他关键字|

sizeoftypedefvolatile

2.1.2数据类型

数据类型的作用:编译器预算对象(变量)分配的内存空间大小

数据类型
基本类型
整型 int\short\long
字符型 char
浮点型
单精度浮点型 float
双精度浮点型 double
构造类型
数组类型
结构类型 struct
联合类型 union
枚举类型 enum
指针类型
char*\int*\int**等

2.1.3常量

常量:

  • 在程序运行过程中,其值不能被改变的量

  • 常量一般出现在表达式或赋值语句中

整型常量10,20,30,-100,0
浮点型常量3.14,0.25,-0.125
字符型常量‘a’,‘b’,‘1’,’-123’
字符串常量“a”,“abc”,“1234”,“3.14”

定义常量的方式:

​ 方式一 :const 数据类型 常量名 = 值

​ 方式二 :#define 常量名 值

2.1.4变量

变量:

  • 在程序运行过程中,其值可以被改变的量

  • 变量在使用前必须先定义,定义变量前必须有相应的数据类型**

定义变量的方式:
数据类型 变量名 = 值

​ 变量名 = 表达式

标识符命名规则:

  • 标识符不能是关键字

  • 标识符只能由数字、字母、下划线组成

  • 第一个字符必须为字母或下划线

  • 标识符中字母区分大小写

变量特点:

  • 变量在编译时为其分配相应的内存空间

  • 可以通过其 名字和地址 访问相应内存

局部变量:

​ 在定义局部变量 可以在数据类型前加修饰 auto 也可以不加

2.1.5使用示例

示例:

//买菜
#include<stdio.h>
int main(void)
{
    // 买菜黄瓜 3元/斤  购买 5/斤
    // 常量:在程序运行中,其值不能发生改变的量
    const int price = 3; 		// const 约束 变量 成为 只读变量,不能修改
    int weight = 5;
    
    int sum = price * weight;
    printf("%d\n", sum);  		// %d 占位符 表示一个十进制的整型
    return 0;
    
}
//求圆的面积和周长
// 圆的面积 S = pi * r * r
// 圆的周长 L = 2 * pi * r
#include<stdio.h>

// 宏定义常量 定义方法: #define 名称 值

#define PI 3.14
int main (void)
{
    // connst float pi = 3.14; 	    	// pi 属于常量 不能改变,所以用 const 修饰
    float r = 2.f;					   // f 表示是对应 float 类型 使用的数据
    
    // 面积
    float S = pi * r * r;
    // 周长
    float L =2 * pi * r;
    
    
    // %f 占位符 表示输出一个浮点型,默认保留6位小数,
    // %.2f  保留连两位小数,四舍五入 
    // double 的占位符是%lf
    printf("圆的面积:%f\n",S)		   
    printf("圆的周长:%f\n",L)
        
    return 0;
}

2.2整型(int)

2.2.1 整型变量的定义和输出

打印格式含义
%d输出一个有符号的 10 进制 int 类型
%o输出 8 进制的 int 类型
%x输出 16 进制的 int 类型,字母以小写输出
%X输出 16 进制的 int 类型,字母以大写输出
%u输出一个 10 进制的无符号数
#include<stdio.h>
int main(void)
{
    // 数据类型 标识符 = 值
    // 无符号 unsigned    有符号 signed(可以省略)
    int a = 10; 
    unsigned b = -10;		// 乱码
        
    printf("%d\n", a);
    printf("%u\n", b);
        
        

    // 定义八进制数据,以 0 开头
    int c = 0123;
        
    // 定义十六进制数据, 以 0x 开头
    int d = 0x123;
    // 在计算机定义数据时,不可以直接定义二进制
    printf("%o\n", c);
    printf("%x\n", d);

    return 0;
}

2.2.2 整型变量的输入 — (scanf 函数)

scanf 引发安全问题两种解决办法:

  1. 在代码开头第一行输入 #define _CRT_SECURE_NO_WARNING
  2. 或在代码命令中输入 #pragma warning(disable:4996)
#define _CRT_SECURE_NO_WARNING
#incloud<stdio.h>
int main(void)
{
    int a;
    printf("请输入数字:")
    // & 运算符  表示取地址运算符
    scanf("%d", &a);		// 不添加第一行代码 VS认为是不安全的,会出现程序错误,最后乱码
    
	// #pragma warning(disable:4996) ,与第一行代码任选其一添加
    
    printf("%d\n", a);
    
    return 0;
    
}

2.2.3 short、int、long、long long

数据类型占用空间
short(短整型)2字节
int(整型)4字节
long(长整型)Windows为4字节,Linux为4字节(32位),8字节(64位)
long long(长长整型)8字节

注意

  • 需要注意的是,整型数据在内存中占的字节数与所选择的操作系统有关。虽然C语言标准中没有明确规定整型数据的长度,但 long 类型整数的长度不能短于 int 类型,short类型整数的长度不能长于 int 类型。
  • 当一个小的数据类型赋值给一个大的数据类型,不会出错,因为编译器会自动转化。但当一个大的数据类型赋值给小的数据类型,那么就可能丢失高位。
  • short <= int <= long < long long
整数常量所需类型
10代表 int 类型
10l,10L代表 long 类型
10ll,10LL代表 long long 类型
10u,10U代表 unsigned int 类型
10ul,10UL代表 unsigned long 类型
10ull,10OLL代表 unsigned long long 类型
打印格式含义
%hd输出 short 类型
%d输出 int 类型
%ld输出 long 类型
%lld输出 long long 类型
%hu输出 unsigned short 类型
%u输出 unsigned int 类型
%lu输出 unsigned long 类型
%llu输出 unsigned long long 类型
#include<stdio.h>
int main(void)
    
{
    //短整型变量
    short a = 10;
    // 整型变量
    int b = 10;
    // 长整型变量
    long c = 10l;		// 或者10L
    // 长长整型变量
    long d = 10ll; 		// 或者10LL
    
    // 打印相应数据
    printf("%hd\n", a);
    printf("%d\n", b);
    printf("%ld\n", c);
    printf("%lld\n", d);
    
    // 数据类型在内存中开辟的字节 (BYTE) 大小 ---- 关键字 sizeof
    // 1B = 8bit
    
    // 两种格式 sizeof(数据类型); sizeof(变量名)
    
    printf("整型:%d\n", sizeof(int));    				// 说明 int 类型占用 4个 字节
    printf("短整型:%hd\n", sizeof(short));				// 说明 short 类型占用 2个 字节
    printf("长整型:%ld\n", sizeof(long));				// 说明 long 类型占用 4个 字节
    printf("长长整型:%lld\n", sizeof(long long));	   // 说明 long long 类型占用 8个 字节
    
    
    
    
    
    
    
}

2.2.4 有符号数和无符号数的区别

  1. 有符号数

    有符号数是最高位位符号位,0代表正数,1代表负数

include<stdio.h>
    
int main()
{
    signed int a = -123456789;
    printf("%X\n", a);
    
    return 0;
}

  1. 无符号数

无符号数最高位不是符号位,而是数的一部分,无符号数不可能是负数。

2.3 sizeof 关键字 ( 计算数据类型长度)

  • sizeof 不是函数,所以不需要包含任何头文件,它的功能是计算一个数据类型的大小,单位为字节
  • sizeof 的返回值为size_t
  • size_t 类型在32位操作系统下是unsigned int,是一个无符号的整数
#include<stdio.h>
int main (void)
{
    int a;
    int b = sizeof(a);		// sizeof 得到指定值占用内存的大小  单位:字节
    printf("b = %d\n", b);
    
    size_t c = sizeof(a);
    printf("c = %d\n",c);
    
    return 0;
        
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值