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
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+Springboot+Mybatis+Vue+微信小程序的轿车改装设计方案

微信小程序的轿车改装设计方案,用户可以自行在小程序中查看某型号轿车的零件&#xff0c;可以查看相关的汽车资源。 一、API1.1 SpringBoot框架搭建1.2 数据库设计1.3 实体映射创建Mapper1.4 接口封装1.5 常用字段类型 二、小程序2.1 项目创建2.2 首页2.3 产品中心页 三、管理端…

[C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测

【官方框架地址】 https://github.com/ViewFaceCore/ViewFaceCore 【算法介绍】 SeetaFace6是由中国科技公司自主研发的一款人脸识别技术&#xff0c;它基于深度学习算法&#xff0c;能够快速、准确地识别出人脸&#xff0c;并且支持多种应用场景&#xff0c;如门禁系统、移动…

通过Kuboard部署Nginx服务并映射挂载NFS服务器

这里写目录标题 一、项目概述二、环境三、样式nginx运行页面nginx挂载存储页面nginx服务service页面index代理网页 四、部署流程集群导入NFS服务器搭建新建nginx工作负载配置拷贝配置信息到NFS 五、总结 一、项目概述 使用Kuboard图形化页面部署Nginx工作负载&#xff0c;代理…

FineBI实战项目一(8):每天每小时订单笔数

1 明确数据分析目标 统计每个小时产生的订单个数 2 创建用于保存数据分析结果的表 create table app_hour_orders(id int primary key auto_increment,daystr varchar(20),hourstr varchar(20),cnt int ); 3 编写SQL语句进行数据分析 selectsubstring(createTime,1,10) as …

SpringBoot pom.xml文件标签含义

Pom文件 基本构成 通过最简单的一个SpringBoot项目的 Pom文件来了解一下Pom文件的基本构成 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XML…

Failed to create CUDAExecutionProvider 使用onnxruntime-gpu未成功调用gpu

最近在使用GPU对onnx模型进行加速过程中&#xff08;仅针对N卡&#xff0c;毕竟也没有别的显卡了。。&#xff09;&#xff0c;遇到了点问题&#xff1a;就是明明在安装了合适版本的显卡驱动和CUDA后&#xff0c;onnx还是不能够成功调用GPU&#xff0c;并且还出现了先导入torch…

专属定制适合个人的知识付费平台,打造个性化品牌与自主管理体验

明理信息科技知识付费saas租户平台 在当今数字化时代&#xff0c;知识付费平台已经成为人们获取专业知识、提升自身素质的重要渠道。然而&#xff0c;公共知识付费平台虽然内容丰富&#xff0c;但难以满足个人或企业个性化的需求和品牌打造。因此&#xff0c;我们提出了专属定…

代码随想录算法训练营day6|242.有效的字母异位词、349.两个数组的交集、202.快乐数

哈希表理论基础 建议&#xff1a;大家要了解哈希表的内部实现原理&#xff0c;哈希函数&#xff0c;哈希碰撞&#xff0c;以及常见哈希表的区别&#xff0c;数组&#xff0c;set 和map。 什么时候想到用哈希法&#xff0c;当我们遇到了要快速判断一个元素是否出现集合里的时…

大图切片预览

文章目录 前言处理流程完整代码前端预览 前言 最近有需求&#xff0c;前端要预览百兆以上的大图&#xff0c;这直接访问应该就不太行了&#xff0c;系统打开都在加载好一会儿&#xff0c;刚好从事的又是 gis 行业&#xff0c;于是打算用类似加载地图的方式来切片加载大图。这里…

视频做成二维码查看?多格式视频二维码生成器的使用方法

现在音视频是工作和生活中经常需要使用的一种内容表现形式&#xff0c;很多人都通过这种方式来查看视频内容&#xff0c;比如产品介绍、使用说明、安装教程等。通过一个二维码就可以来承载视频内容&#xff0c;与传统的方式相比拥有更快的内容传播速度&#xff0c;简化用户获取…

04.SpringCloud网关-gateway

1.Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式…

Stm32cube keil5配置串口printf 蓝牙打印不出来

1.检查cube里面波特率是否与AT蓝牙设置一致 2.keil里面设置是否打开Use MicroLIB 3、stm32cube是否开启串口中断 4.检测线路是否接触不良&#xff0c;读写线插反等。

这一次技术学习分享,超过苦读30本书

同学们&#xff0c;做个问卷调查&#xff0c;你参加了这次由腾讯云主办的第四期“云梯计划”了不&#xff1f; “云梯计划”已连续举办三年&#xff0c;免费为超过1万名大学生提供了腾讯云认证培训和考试名额&#xff0c;帮助其提升就业竞争力。 想要得到免费的系统性、实战性…

SpringBoot集成 Websocket 实现服务与客户端进行消息发送和接收

介绍 WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。 效果 客户端效果 服务端日志 pom依赖 <!-- websocket --> <dependency><groupId>org.springfram…

APM32F035有感矢量控制方案

一、先来几句废话 首先这两年公司越来越多的开始使用国产的MCU&#xff0c;用过GD32、AT32、APM32等等&#xff0c;目前稳定使用的是APM32,包括身边朋友工作室&#xff0c;也开始从TI、STM、NXP换成APM32。上个月有幸拿到APM32F035电路控制板&#xff0c;非常感谢面包板社区提供…

Pytest自动化测试框架

1、pytest简介 pytest是Python的一种单元测试框架&#xff0c;与python自带的unittest测试框架类似&#xff0c;但是比unittest框架使用起来更简洁&#xff0c;效率更高。 执行测试过程中可以将某些测试跳过&#xff0c;或者对某些预期失败的case标记成失败能够支持简单的单元…

服务器网卡介绍

本篇文章对服务器网卡进行基础介绍&#xff0c;包括基本概念、网卡厂商及网卡绑定策略等。 1、基本概念 服务器网卡&#xff08;Network Interface Card&#xff09;是一种用于连接服务器与网络之间的硬件设备。它允许服务器通过网络与其他设备进行通信&#xff0c;包括传输数…

九州金榜孩子厌学原因及解决方法

厌学是根据不同类型孩子&#xff0c;表现也有差异&#xff0c;但是者都会对成绩产生很大的影响。那么作为家长&#xff0c;我们应该怎么面对不同类型孩子的厌学&#xff0c;又该怎么样去解决呢&#xff0c;我们要如何让孩子重拾学习的信心呢&#xff1f;下面&#xff0c;我们从…

如何查看崩溃日志

​ 目录 描述 思路 查看ipa包崩溃日志 简单查看手机崩溃信息几种方式 方式1:手机设置查看崩溃日志 方式2: Xocde工具 方式3: 第三方软件克魔助手 环境配置 实时日志 奔溃日志分析 方式四&#xff1a;控制台资源库 线上崩溃日志 线上监听crash的几种方式 方式1: 三…

SQLServer设置端口,并设置SQLServer和SQLServer Browser服务

SQLServer默认使用动态端口&#xff0c;即每次启动sqlserver.exe时&#xff0c;端口port都会动态变化。若要使用静态端口&#xff0c;比如port1433&#xff0c;则需要在SQL Server Configuration Manager(简称SSMS&#xff09;里配置。这里以SQL Server 2005 Configuration Man…