C语言—数据类型

变量和基本数据类型

变量类型的概念

变量是在程序中可以发生变化的量,变量是有类型的,变量的类型决定了变量存储空间的大小以及如何解释存储的位模式。

1字节(Byte)=8位(bit)

定义格式

存储类型   数据类型   变量名;

例如:

(auto) int  a;

存储类型:

        auto、static、register、extern

变量名:

        是标识符,要遵循标识符命名规则

数据类型:

        包含名称、大小(单位字节)和取值范围

        char、short、int、long、float、double、signed、unsigned

类型存储大小值范围
char字符类型1字节-2^7 ~ 2^7-1
unsigned char无符号字符类型1字节0 ~ 2^8-1
int整数类型4字节-2^31 ~ 2^31-1
unsigned int无符号整数类型4字节0 ~ 2^32-1
short短整型2字节-2^15 ~ 2^15-1
unsigned short无符号短整型2字节0 ~ 2^16-1
long长整型4字节-2^31 ~ 2^31-1
unsigned long无符号长整型4字节0 ~ 2^32-1
float单精度浮点型4字节有效数据到小数点后6~7位
double双精度浮点型8字节有效数据到小数点后15~16位

例如:

int c=10,d=10;
float a=33.33333333;
double b=33.33333333;
printf("%f\n%lf\n%d %d\n",a,b,c,d);

输出结果为:

33.333332

33.333333

10 20

初始化格式

定义时初始化

int  a=10;

先定义再初始化

int  a;

a=10;

局部变量和全局变量

相关概念

生命周期 

变量的生命周期是指变量从创建到销毁之间的一个时间段,也就是存活的周期,是时间维度。

作用域

作用域是指变量可以起作用的范围,是空间维度。

内存分区

全局变量和局部变量的区别:

局部变量全局变量
定义位置函数体内部函数体外部
存储位置栈区全局区
生命周期同函数体共存亡同整个程序共存亡
作用域作用于函数体内部作用于整个程序
初值未初始化时是随机值未初始化时是0
#include <stdio.h>
#include <stdlib.h>int n1;
int mai(int args,char const *argv[])
{int nn2;printf("%d %d\n",n1,n2);return 0;
}

输出结果为:

0    7153974

常量

概念

程序运行过程中不会发生改变的量叫做常量,常量存放在常量区。

分类

字符型常量

字符型常量属于char类型,从ASCII码表里面能找到的都是字符型常量,用单引号括起来表示,不可以改变,例如:‘A’ 。

类型存储大小值范围
char字符类型1字节-128 ~ 127
unsigned char无符号字符类型1字节0 ~ 255
signed char有符号字符类型1字节-128 ~ 127
原码、补码和反码

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

正数的原码、补码、反码都一样

负数要用补码来计算:

        原码:在数值前面直接加符号位表示

        反码:符号位不变,其他位按原码取反

        补码:反码加一

例如:

-5:

        原码:1000 0101

        反码:1111  1010

        补码:1111  1011

用‘’(单引号)括起来的就是字符型常量:

‘a’         字符a

‘\0’        空字符

‘\n’        换行符

例如:

char c='a';//把字符常量a赋值给字符型变量
printf("%c\n",'A');
printf("%c\n",66);
printf("%c\n",'\x42');//十六进制的ASCII码值表现形式
printf("%c\n",'\102');//八进制的ASCII码值表现形式
printf("%c\n",c);
printf("%c\n",'A'+32);
printf("%c\n",'A'+' ');
printf("%c\n",'A'+1);

补充:

在C语言中规定转义字符 ‘\x41’ 中的 \ 是转义字符引导符,后面跟一个x,表示x后面的数字是十六进制表示法,用 ‘’(单引号)括起来表示字节ASCII码值。转义字符 \ 后面直接加数字表示转义字符后面的数字是八进制表示法,代表转义成八进制的字符。

字符串常量

用 “”(双引号)括起来的就是字符串,字符串后面会自动加上一个 ‘\0’ ,表示字符串结束 。

例如:

        “hello” 字符串结尾有一个 ‘\0’

printf("hello\n");
printf("%s","hello");
整型常量

整型常量是类型为整数的常量,包括从负数到零到正数所有的整数,可以用二进制、八进制、十进制、十六进制表示。

例如:

int a=15;//把整数常量赋值给整数变量
printf("%d\n",a);
printf("%d\n",0b1111);//二进制输出15
printf("%d\n",017);//八进制输出15
printf("%d\n",15);//十进制输出15
printf("%d\n",0xF);//十六进制输出15

以上输出的结果都是15

浮点型常量

浮点型常量就是为浮点数的常量,包括从负数到零到正数所有的浮点数。

数据类型有float和double。

指数常量

指数常量就是用科学计数法表示的常量。

例如:

        300000 = 3*10^5 = 3e+5

        0.0000002 = 2*10^-7 = 2e-7

标识符常量(宏定义)

宏定义:起标识符的作用

单纯的文本替换,在预处理的时候进行。

必须遵循标识符的命名规则。

一般大写标识。

格式:#define  宏名  常量或表达式

特点:只能单纯的文本替换,不要进行手动运算,(原样替换,替换完再进行计算)。

#include <stdio.h>
#include <stdlib.h>#define ONE 
#define TWO ONE+ONE
#define MORE TWO+ONE+ONE+ONE+ONE+ONE+ONE
#define HELLO "Hello"int main(int argc,char const *argv[])
{printf("%d\n",MORE);printf("%s\n",HELLO);
}

如果一个串长于一行,可在行尾用反斜杠 ‘\’ 进行续行

#define N 2
#define M N+3  //2+3  
#define NUM N+M/2+1  //2+2+3/2+1 = 6
void main()
{int a=NUM;printf("%d\n",a);  //6
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/236461.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java JDBC 连接数据库(增删查改)

必须先插入工具包 代码 public static void main(String[] args) {DataSource ds JdbcHelper.getDs();System.out.println(ds);JdbcTemplate jdbcTemplatenew JdbcTemplate(ds);System.out.println(jdbcTemplate);//新增String sql1"insert into biao values(null,?,?,…

【Web】forward 和 redirect 的区别

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Web ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 Forward&#xff08;转发&#xff09;&#xff1a; Redirect&#xff08;重定向&#xff09;&#xff1a; 区别总结&#xff1a; …

主题-----读微信公众号

1.SOA 面向服务的架构&#xff08;Service-Oriented Architecture&#xff0c;SOA&#xff09;还没有一个公认的定义。许多组织从不同的角度和不同的侧面对 SOA 进行了描述&#xff0c;较为典型的有以下三个&#xff1a; &#xff08;1&#xff09;W3C 的定义&#xff1a;SOA 是…

Python基础知识:整理11 模块的导入、自定义模块和安装第三方包

1 模块的导入 1.1 使用import 导入time模块&#xff0c;使用sleep功能&#xff08;函数&#xff09; import time print("start") time.sleep(3) print("end")1.2 使用from 导入time的sleep功能 from time import sleep print("start") slee…

SpringMVC ResponseEntity常见使用场景

ResponseEntity 作为 Spring MVC controller层 的 HTTP response&#xff0c;包含 status code, headers, body 这三部分。 正常场景 RestController Slf4j public class SearchController {AutowiredUserService userService;RequestMapping(value "/getAllStudents4&…

ROS2学习笔记三:话题Topic

目录 前言 1 话题简介 2 常用指令 3 RCLCPP实现实现话题 3.1 创建工作空间 3.2 代码编写 3.2.1 发布端编写 3.2.2 发布端编写 前言 ROS2中的一个重要概念是话题&#xff08;Topic&#xff09;。话题是一种通过发布者和订阅者之间进行异步通信的机制。发布者&#xff0…

归并排序例题——逆序对的数量

做道简单一点的题巩固一下 归并排序实现步骤 将整个区间 [l, r] 划分为 [l, mid] 和 [mid1, r]。 递归排序 [l, mid] 和 [mid1, r]。 将左右两个有序序列合并为一个有序序列。 题目描述 给定一个长度为 n 的整数数列&#xff0c;请计算数列中的逆序对的数量。 逆序对的定义…

Java面试题(java高级面试题)

线程池的核心线程数设置为多大比较合理&#xff1f; Worker线程在执行的过程中&#xff0c;有一部计算时间需要占用CPU&#xff0c;另一部分等待时间不需要占用CPU&#xff0c;通过量化分析&#xff0c;例如打日志进行统计&#xff0c;可以统计出整个Worker线程执行过程中这两…

微信小程序开发学习笔记《8》tabBar

微信小程序开发学习笔记《8》tabBar 博主正在学习微信小程序开发&#xff0c;希望记录自己学习过程同时与广大网友共同学习讨论。tabBar官方文档 tabBar这一节还是相当重要的。 一、什么是tabBar tabBar是移动端应用常见的页面效果&#xff0c;用于实现多页面的快速切换。小…

GC2003七通道NPN 达林顿管,专为符合标准 TTL 而制造

GC2003 内部集成了 7 个 NPN 达林顿晶体管&#xff0c;连接的阵列&#xff0c;非常适合逻辑接口电平数字电路&#xff08;例 如 TTL&#xff0c;CMOS 或PMOS 上/NMOS&#xff09;和较高的电流/电压&#xff0c;如电灯电磁阀&#xff0c;继电器&#xff0c;打印机或其他类似的负…

NAND Separate Command Address (SCA) 接口数据传输解读

在采用Separate Command Address (SCA) 接口的存储产品中&#xff0c;DQ input burst和DQ output burst又是什么样的策略呢&#xff1f; DQ Input Burst: 在读取操作期间&#xff0c;数据以一种快速并行的方式通过DQ总线传送到控制器。在SCA接口下&#xff0c;虽然命令和地址信…

设计一个简易版的数据库路由

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

黑马苍穹外卖学习Day5

文章目录 Redis学习Redis简介准备工作Redis常用数据类型介绍各数据类型的特点Redis常用命令字符串操作命令哈希操作命令列表操作命令集合操作命令有序集合操作命令通用操作命令 在Java中操作Redis导入Spring Data Redis坐标配置Redis数据源编写配置类&#xff0c;创建RedisTemp…

从事铁路工作保护足部,穿什么劳保鞋更安全

铁路运输在我国交通运输业中起着骨干作用&#xff0c;为国民经济的可持续发展和人口流动做出了巨大贡献。安全是铁路运输不可忽视的问题&#xff0c;在作业场地随处能见到“安全就是生命&#xff0c;责任重于泰山”的安全标语&#xff0c;由此可见安全问题是放在首位的。 铁路施…

开源游戏引擎:创造无限可能 | 开源专题 No.56

godotengine/godot Stars: 62.6k License: MIT Godot Engine 是一个功能强大的跨平台游戏引擎&#xff0c;可用于创建 2D 和 3D 游戏。它提供了一套全面的常见工具&#xff0c;让用户可以专注于制作游戏而不必重复造轮子。该引擎支持将游戏一键导出到多个平台上&#xff0c;包…

代码随想录Day.31 | 455. 分发饼干、376. 摆动序列、53. 最大子序和

455. 分发饼干 1. LeetCode链接 455. 分发饼干 - 力扣&#xff08;LeetCode&#xff09; 2. 题目描述 3. 解法 贪心法&#xff0c;首先想到的是&#xff0c;局部最优&#xff1a;让每个孩子尽可能拿能拿到的最小饼干尺寸。为了方便查找&#xff0c;这就要求至少饼干尺寸是从…

shell中的正则表达式、编程-grep、编程-SED、以及编程-AWK

正则表达式RE 用来处理文本 正则表达式(Regular Expression, RE)是一种字符模式, 用于在查找过程中匹配指定的字符. 在大多数程序里, 正则表达式都被置于两个正斜杠之间; 例如/l[oO]ve/就是由正斜杠界定的正则表达式, 它将匹配被查找的行中任何位置出现的相同模式. 在正则表达…

react antd EditableProTable - 可编辑表格

与编辑表格外的内容联动 value 同 dataSource&#xff0c;传入一个数组,是 table 渲染的元数据 T[] undefined onChange dataSource 修改时触发&#xff0c;删除和修改都会触发,如果设置了 value&#xff0c;Table 会成为一个受控组件。 (value:T[])>void undefined recordC…

[易语言]使用易语言部署工业级人脸检测模型

【框架地址】 https://github.com/ShiqiYu/libfacedetection 【算法介绍】 Libfacedetection是一个开源的计算机视觉库&#xff0c;主要用于实时的人脸检测。它利用深度学习技术&#xff0c;特别是卷积神经网络&#xff08;CNN&#xff09;&#xff0c;实现了高精度的脸部定位…

GlusterFS

一. 概念 1. 介绍 gluster是一个横向扩展的分布式文件系统&#xff0c;可将来自多个服务器的磁盘存储资源整合到一个全局名称空间中&#xff0c;可以根据存储消耗需求快速调配额外的存储。它将自动故障转移作为主要功能. 分布式存储系统.集群式NAS存储.无集中式元数据服务,采…