首页 > 其他分享 >②C语言数据类型与变量

②C语言数据类型与变量

时间:2024-10-16 19:52:21浏览次数:9  
标签:变量 int 数据类型 unsigned C语言 zd printf 类型 sizeof

数据类型

1数据类型概要

整形类型描述整数,字符类型描述字符,浮点型类型描述小数。
在这里插入图片描述
特殊说明:布尔类型
需要拥有的头文件(<stdbool.h)
布尔类型的变量的取值是:true/false

 #define bool  _Bool
 #define false 0
 #define true  1

实例

 _Bool flag = true;
 if (flag)
 printf("i like C\n");

2数据类型长度

Ⅰsizeof操作符

sizeof是 关键字 ,也是 操作符 。专门用来计算sizeof的操作符数的类型长度,单位是字节

sizeof操作符的操作数可以是 类型 ,也可以是 变量或表达式

 sizeof (类型)
 sizeof 表达式
 ※表达式可省略括号
 ※表达式并不参与真实运算
 ※只根据表达式的类型来得出大小

sizeof运算符的返回值:C语⾔只规定是⽆符号整数,并没有规定具体的类型,⽽是留给系统⾃⼰去决定,sizeof 到底返回什么类型。不同的系统中,返回值的类型有可能是unsigned int ,也有可能是对应的printf() 占位符分别unsigned long ,甚⾄是%u 、%lu和unsigned long long ,%llu 。这样不利于程序的可移植性。C语⾔提供了⼀个解决⽅法,创造了⼀个类型别名回值类型。对应当前系统的 size_t ,⽤来统⼀表⽰sizeof 的返回值类型。对应当前系统的sizeof的返回值类型,可能是unsigned int ,也可能是unsigned long long 。

Ⅱ数据类型长度

#include <stdio.h>
 int main()
 {	
 printf("%zd\n", sizeof(char));
 printf("%zd\n", sizeof(_Bool));
 printf("%zd\n", sizeof(short));
 printf("%zd\n", sizeof(int));
 printf("%zd\n", sizeof(long));
 printf("%zd\n", sizeof(long long));
 printf("%zd\n", sizeof(float));
 printf("%zd\n", sizeof(double));
 printf("%zd\n", sizeof(long double));
 return 0;
 }

vs2022 X64配置下的输出

 1 1
 2 1
 3 2
 4 4
 5 4
 6 8
 7 4
 8 8
 9 8

注意:sizeof的返回值,用 %zd 来打印。

在这里插入图片描述

Ⅲsizeof中表达式不计算

sizeof在代码进行编译的时候,就根据表达式的类型确定了。表达式在程序运行时才执行,可是在编译期间sizeof已经被处理掉了,所以程序运行期间表达式不再执行。

3signed与unsigned

C语言中使用signed与unsigned修饰字符型和整形类型。

signed关键字:表示一个类型有正负号,包含负值。
unsigned关键字:…只能表示0/正整数。

对于int类型,默认带有正负号,省略不写(写了也对)

int类型也可以不带有正负号,只表示非负整数,需要用到关键字unsigned来声明变量。

整数变量声明为unsigned的好处是,同样⻓度的内存能够表⽰的最⼤整数值,增⼤了一倍。⽐如,16位的signed short int 的取值范围是:-32768~32767,最⼤是32767;⽽unsigned short int
的取值范围是:0~65535,最⼤值增⼤到了65,535。32位的
int 的取值范围可以参看limits.h 中给出的定义(下图)。

#define SHRT_MIN    (-32768)//有符号16位整型的最⼩值
#define SHRT_MAX      32767//有符号16位整型的最⼤值
#define USHRT_MAX     0xffff//⽆符号16位整型的最⼤值
#define INT_MIN     (-2147473647-1)//有符号整型的最⼩值
#define INT_MAX       (214747367)//有符号整型的最⼤值

变量

全局变量:在⼤括号外部定义的变量就是全局变量
全局变量的使⽤范围更⼴ ,整个⼯程中想使⽤ ,都是有办法使⽤的。
局部变量:在⼤括号内部定义的变量就是局部变量
局部变量的使⽤范围是⽐较局限 ,只能在⾃⼰所在的局部范围内使⽤的。

#include <stdio.h> 2
int global = 2023;//全局变量

int main()
{
    int local = 2018;//局部变量
    printf("%d\n", local);
    printf("%d\n", global);
    return = 0;
}

注意:其实当局部变量和全局变量同名的时候 ,局部变量优先使⽤ 。

局变量和局部变量在内存中存储在哪⾥呢?
⼀般我们在学习C/C++语⾔的时候 ,我们会关注 内存中的三个区域:栈区、堆区、静态区。

  1. 局部变量是放在内存的栈区
  2. 全局变量是放在内存的静态区
  3. 堆区是⽤来动态内存管理的
    在这里插入图片描述

标签:变量,int,数据类型,unsigned,C语言,zd,printf,类型,sizeof
From: https://blog.csdn.net/H2034562095/article/details/142922905

相关文章

  • 《php经典实例》5 第五章 变量
    7把复杂的数据类型压缩到一个字符串中7.2magic_quotes_gpc魔术引号开关7.2.1魔术引号开关的功能:如果输入的数据有单引号'、双引号"、反斜杠\ 、会自动加上反斜杠,以防sql注入等恶意代码7.2.2开启此功能在php.ini中设置magic_quotes_gpc=On此功能仅在在<=......
  • 【bayes-Transformer多维时序预测】bayes-Transformer多变量时间序列预测,基于bayes-Tr
    %% 划分训练集和测试集P_train=res(1:num_train_s,1:f_)';T_train=res(1:num_train_s,f_+1:end)';P_test=res(num_train_s+1:end,1:f_)';T_test=res(num_train_s+1:end,f_+1:end)';%% 划分训练集和测试集M=size(P_train,2);N=siz......
  • 鹏哥C语言79-81---野指针+指针运算
    #define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<string.h>//----------------------------------------------------------------------------------------------------------3.野指针//野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限......
  • c语言分支和循环(上)
    1.if语句if语句后面不加分号,默认情况下if和else语句后面只能跟一条语句,如果要使用多条语句,可以用{}将想要多条表达的式子放进去#include<stdio.h>intmain(){intnum=0;//输入scanf("%d",&num);//一定别忘了取地址//判断和输出if(num%2==1)//......
  • C语言手撕实战代码_线索二叉树_先序中序线索二叉树_树的先根遍历_后根遍历_树的度_孩
    文章目录1.设计算法构造一棵先序线索二叉树2.先序线索二叉树的先序遍历算法3.设计算法构造一棵中序线索二叉树4.遍历中序线索二叉树5.树的先根遍历和后根遍历6.树T的叶子结点个数7.计算一棵以孩子兄弟表示的树T的度,该算法的时间复杂度为O(n)8.计算树孩子兄弟链表表示的T......
  • C语言中的“宏”以及宏的使用
    在C语言中,宏是一种预处理器指令,主要通过 #define 来定义。宏可以在编译时进行文本替换,使代码更加简洁和可读。如有问题,请指正!以下是C语言宏的几个主要应用场景:1.常量定义使用宏定义常量,可以避免在代码中出现魔法数字,使代码更加易于维护。#definePI3.14159floatra......
  • python基础篇(变量)
    学习目标:python语言中的变量Listitempython语言中,变量主要用来表示和保存数据,可随时命名,随时赋值和随时使用。变量赋值可以通过’='来实现。语法如下:一.变量名=value例如:#将HelloWorld赋值给变量名messagemessage=“HelloWorld”print(message)二.关键字与......
  • C++中如何使用单例模式管理全局变量
    单例模式(SingletonPattern)是一种常用的设计模式,旨在确保一个类只有一个实例,并提供一个全局的访问点。要使用单例模式管理全局变量,可以通过控制类的实例化过程,防止多个对象的创建。这样做不仅可以保证数据一致性,还能避免使用直接的全局变量带来的命名冲突和潜在的多线程安全问题。......
  • 基于常青藤算法优化深度混合核极限学习机(IVY-DHKELM)的数据多变量回归预测 Matlab (
    [原创]基于常青藤算法优化深度混合核极限学习机(IVY-DHKELM)的数据多变量回归预测Matlab(多输入单输出)程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel!①将多项式核函数与高斯核函数加权结合,构造出新的混合核函数,并引入自动编码器对极限学习机进行改进,建......
  • 基于网格搜索优化最小二乘向量机(GS-LSSVM)的数据多变量回归预测 Matlab代码(多输入单
    基于网格搜索优化最小二乘向量机(GS-LSSVM)的数据多变量回归预测Matlab代码(多输入单输出)程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel!网格搜索GS优化参数为:sigma、gamma1.购买前GS可以更换为其他的优化算法!需要其他算法的都可以定制!注:1️⃣、运行环境要......