首页 > 其他分享 >C语言基础(二)

C语言基础(二)

时间:2024-07-19 17:00:23浏览次数:8  
标签:int 基础 unsigned long C语言 zd printf sizeof


数据类型

        数据类型介绍:

                整型类型来描述整数,字符类型来描述字符,浮点型类型来描述小数;


        字符型:

char //character
[signed] char //有符号的
unsigned char //⽆符号的

        整型:

//短整型
short [int]
[signed] short [int]
unsigned short [int]
//整型
int
[signed] int
unsigned int
//⻓整型
long [int]
[signed] long [int]
unsigned long [int]
//更⻓的整型
//C99中引⼊
long long [int]
[signed] long long [int]
unsigned long long [int]

        浮点型:

float
double
long double

        布尔类型:

        C语言中原本并没有为布尔类型单独设置一个类型,而是使用整数0表示假,非零值表示真。在c99中也引入了布尔类型,专门表示真假;

_Bool

布尔类型的使用需要使用头文件

<stdbool.h>

布尔类型变量的取值是:true  或  false

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

各种数据类型的长度

        sizeof操作符:

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

bite    //计算机信息的最小单位
byte    //计算机信息技术中最基本的存储单位
1 byte = 8 bite

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

sizeof( 类型 )
sizeof 表达式
  • sizeof 的操作数如果不是类型,是表达式的时候,可以省略掉后边的括号的。
  • sizeof 后边的表达式是不真实参与运算的,根据表达式的类型来得出大小。
  • sizeof 的计算结果是 size_t 类型的。

示例:

#include <stdio.h>

int main()
{
     int a = 10;
     printf("%zd\n", sizeof(a));
     printf("%zd\n", sizeof a);//a是变量的名字,可以省略掉sizeof后边的()
     printf("%zd\n", sizeof(int));
     printf("%zd\n", sizeof(3 + 3.5));
     return 0;
}

  

观察sizeof的返回值类型为%zd

        数据类型的长度

#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;
}

        运行结果:

 

        sizeof中表达式的计算:

//测试:sizeof中表达式不计算
#include <stdio.h>
int main()
{
     short s = 2;
     int b = 10;
     printf("%d\n", sizeof(s = b+1));
     printf("s = %d\n", s);
     return 0;
}

注:sizeof在代码编译的时候,就根据表达式的类型确定了,类型的常用,而表达式的执行却要在程序的运行期间才能执行,在编译期间已经将sizeof处理掉了,所以在运行期间就不会执行表达式了。

signed和unsigned

        从语言使用signedunsigned关键字修饰字符型整型类型数据;

        signed关键字,表示一个类型带有正负号,包含负值;

        unsigned关键字,表示该类型不带有正负号,只能表示零和正整数;

对int类型:

signed int a;  // 等同于int a;

int类型也可以不带正负号,只表示非负整数。这是必须用unsigned关键字声明变量。

unsigned int a;    //int也可省略,等同于 unsinged a;

整型变量声明为unsigned的好处是,同样长度的内存能够表示的最大整数值,增大一倍

比如:16位的signed short int 的取值范围是:-32768~32767,最大是32767;而unsigned short int 的取值范围:0~65535;

下面的定义是VS2022环境中,limits.h中相关定义:

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

字符类型char也可以设置signed和unsigned:

signed char c; // 范围为 -128 到 127
unsigned char c; // 范围为 0 到 255

注:char 不等同于 signed char

数据类型的取值范围

        limits.h  说明了整型类型的取值范围;

        float.h  说明了浮点类型的取值范围;

为了代码的可移植性,需要知道某种整数类型的极限值时,应该尽量使⽤这些常量。
SCHAR_MIN , SCHAR_MAX :signed char 的最⼩值和最⼤值。
SHRT_MIN , SHRT_MAX :short 的最⼩值和最⼤值。
INT_MIN , INT_MAX :int 的最⼩值和最⼤值。
LONG_MIN , LONG_MAX :long 的最⼩值和最⼤值。
LLONG_MIN , LLONG_MAX :long long 的最⼩值和最⼤值。
UCHAR_MAX :unsigned char 的最⼤值。
USHRT_MAX :unsigned short 的最⼤值。
UINT_MAX :unsigned int 的最⼤值。
ULONG_MAX :unsigned long 的最⼤值。
ULLONG_MAX :unsigned long long 的最⼤值。

变量

变量的创建

        C语言中把经常变化的值称为变量,不变的值称为常量

int age; //整型变量
char ch; //字符变量
double weight; //浮点型变量

数据类型 + 变量名

变量在创建的时候就给一个初始值,就叫初始化。

int age = 18;
char ch = 'w';
double weight = 48.0;
unsigned int height = 100;

变量的分类

变量分为全局变量局部变量:

#include <stdio.h>
    int global = 2023;//全局变量
int main()
{
     int local = 2018;//局部变量
     printf("%d\n", local);
     printf("%d\n", global);
     return 0;
}

全局变量的作用范围更加广,局部变量只在局部起作用;

注:如果局部变量和全局变量的名字相同,局部变量优先使用

#include <stdio.h>
    int n = 1000;
int main()
{
     int n = 10;
     printf("%d\n" n);//打印的结果是多少呢?
     return 0;
}

全局变量和局部变量在内存中的储存位置:

  • 局部变量是放在内存的栈区;
  • 全局变量是放在内存的静态区;
  • 堆区是用来动态内存管理的;

标签:int,基础,unsigned,long,C语言,zd,printf,sizeof
From: https://blog.csdn.net/2301_79949064/article/details/140479256

相关文章

  • C语言基础(四)
    printf库函数基本用法:printf()的作⽤是将参数⽂本输出到屏幕。它名字⾥⾯的f代表format(格式化),表⽰可以定制输出⽂本的格式。#include<stdio.h>intmain(){printf("Hello,world");return0;}printf()不会在行尾自动添加换行符,运行结束后,光标就停留在输......
  • C语言基础(三)
    算数操作符:+、-、*、\、%    C语言中为了方便运算,提供了一系列操作符(运算符),其中有一组操作符叫:算术操作符。分别是:+-*/%,这些操作符都是双目操作符。*运算符    用来完成乘法运算。/运算符    用来完成除法运算。    除号的两端如......
  • 【Linux】网络基础_1
    文章目录十、网络基础1.协议OSI七层模型和TCP/IP四层模型网络传输基本流程报文与封装未完待续十、网络基础1.协议“协议”是一种约定。在网络环境下,主机距离过远时,必定会引发新的问题,比如数据可靠性,主机定位问题,数据传输等问题。为了解决这些问题,让这些不同......
  • JAVA基础知识
    注释单行注释//多行注释/**/文档注释(JavaDoc)/**标识符和关键字关键字标识符以字母、$、_开始区分大小写可以中文或拼音(不建议)数据类型强类型语言与弱类型语言Java:强类型变量需要先定义再使用(安全性高速度慢)基本数据类型与引用数据类型基......
  • C语言实现全局变量定义的实验
    constant.h文件内容:staticconstchartest_static_variable='a'; function_module.c文件内容:#ifndef__STDIO_H#define__STDIO_H#include<stdio.h>#endif#ifndef__CONSTANT_H#define__CONSTANT_H#include&quo......
  • MySQL 学习笔记 基础(数据模型,DDL,DML)
    数据模型 SQLSQL通用语法SQL语句可以单行或多行书写,以分号结尾。SQL语句可以使用空格/缩进来增强语句的可读性。MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。注释:·单行注释:--注释内容或#注释内容(MYSQL特有)·多行注释:/*注释......
  • LLM 大模型学习必知必会:大模型基础知识篇
    魔搭ModelScope开源的LLM模型魔搭ModelScope欢迎各个开源的LLM模型在社区上做开源分享。目前社区上已经承载了来自各个机构贡献的不同系列的LLM模型。并且社区的开发者也在这些模型的基础上,贡献了许多创新应用,并在ModelScope的创空间上进行分享。本专题初步梳......
  • 虚幻引擎 游戏开发基础
    1.Actor和Component在UnrealEngine中,Actor和Component是构建游戏世界的两个基本概念,它们之间有一些重要区别:Actor(角色):Actor是游戏世界中的实体,它可以被放置在场景中,并且可以是可见的或不可见的。每个Actor都有一个Transform(位置、旋转和缩放信息),它定义了Actor......
  • 初阶C语言2
    一、循环语句whilefordowhile1.while循环1.1while循环语法同一件事情需要完成很多次,while语句可以实现循环。while(表达式)    循环语句;1.2while语句中的break和continue①.breakwhile中的break是用于永久终止循环的。②.continuecontinue是用于终止......
  • Android自动化 - 基础总集
    本笔记根据微信读书的:《Android自动化测试实战》简介测试金字塔金字塔模型将测试分为单元(Unit)、服务(Service)和用户界面(UserInterface,UI)这3个层级;在测试发展的历程中,也出现了一些重新定义金字塔层级的测试模型,尽管对分层的具体描述各不相同(有人将这3个层级分别定义为单......