c语言数据类型(一)
(强数据类型)
1.常量
常量是程序中不可变的量
10为常量
两种常量
#define 定义宏常量
const
#对于#define 类型的常量,c语言的习惯是常量名称大写, 对于普通const常量以及变量,一般以小写结合大写的方式
#include <stdio.h> int main()
{
printf("%d", );
return ;
}
#include <stdio.h> #define MAX 10 //定义一个宏常量 值为10
int main()
{
printf("%d", MAX);
return ;
}
#include <stdio.h> #define MAX 10 //定义一个宏常量 值为10
int main()
{
//MAX = 200; //等号左边必须为变量,不能为常量,常量的值不能修改
printf("%d", MAX);
return ;
}
#include <stdio.h>
int main()
{
const int a = ;
printf("%d", a);
return ;
}
以上为整数常量
字符串 常量
#include <stdio.h>
#define STRING "hello world\n";
int main()
{
const char * str = "hello c";
}
2. 二进制 位 字节 字
一个位只能表示 0 1 两种状态 bit 1位位1bit
一个字节为八个二进制 8位 BYTE 8个bit一个字节
500GB B为BYTE 10Mb bit
1个字 2个字节 简称WORD
2个字为双字 ZWORD
0 八进制 0x 16进制
原码 反码 补码
整数占 4个字节 以下只写了 1个字节举例子
sizeof 关键字
是c语言关键字,功能是求指定数据类型所占用的字节数。
#include <stdio.h>
int main()
{
printf("%d\n", sizeof());
return ;
}
32位(bit)操作系统返回的为4 最大的存储的数字 2(32-1) 的数字
size_t 类型
int类型
int 常量变量
int 是32位的一个二进制整数,在内存中占据4个字节‘’
%d , 输出一个有符号的10进制整数
%u , 代表输出一个无符号的10进制的整数
int main()
{
printf("%x\n", 0x10);//输出10
printf("%x\n", );//输出十进制10对应得十六位a
printf("%x\n", 0xa);//输出a
return ;
}
#include <stdio.h>
int main()
{
printf("%x\n", 0x10);//输出10
printf("%x\n", );//输出十进制10对应得十六位a
printf("%x\n", 0xa);//输出a
printf("%x", -);
return ;
}
/*
printf("%x", -7); 输出 fffffff9(这是-7的补码转换为16进制)
源码 10000000 00000000 000000000 00000111
反码 11111111 11111111 111111111 11111000
补码 11111111 11111111 111111111 11111001
*/
/*
-7
1000 0111 用有符号的眼光-7 无符号的眼光135
*/
%x 代表输出十六进制数 (十六进制不表达负数)
%X 用大写字母方式输出16进制数
%o 输出八进制数 (2进制与八进制不表达负数)
short、 long 、int 、 long long 、unsigned 、signed(有符号数)
short 为短整数 在32位操作系统占2个字节
long 代表长整数, 在32位系统下位4个字节 在64位系统下,windows 4个字节 Unix 为八个字节(不同的操作系统不一样)
int (32位系统以上)不论在什么情况下都是4个字节
long long 是64位 也就是八个字节的整数 对于32位操作系统cpu寄存器位32位的,计算longlong类型的数据, 效率很低
unsigned 无符号的数,可以加在任意整数类型后面
#include <stdio.h>
int main()
{
int a = ;//4个字节
short b = ;
printf("%d\n", sizeof(b));//
return ;
}
#include <stdio.h>
int main()
{
int a = ;//4个字节
short b = ;
long long c = ;
printf("%d\n", sizeof(c));//
return ;
}
#include <stdio.h>
int main()
{
int a = ;//4个字节
short b = ;
long long c = ;
unsigned int d = ;
printf("%d\n", sizeof(d));//
return ;
}
整数溢出
一个整数计算的时候超过整数能够容纳的最大单位后,整数会溢出,溢出的结果是高位舍弃。
当一个小的整数复制给大的整数,符号位不会丢失,会集成
unsigned short abc = 0xffff;
abc = abc + ;
printf("%d\n", abc);//
return ;
#include <stdio.h>
int main()
{
int a = ;//4个字节
short b = ;
long long c = ;
unsigned int d = ;
printf("%d\n", sizeof(d));// unsigned short abc = 0xffff;
//abc = abc + 1;
//printf("%d\n", abc);// abc = abc + ;
printf("%d\n", abc);// abc = ;
abc = abc - ;
printf("%u\n", abc);// int i1 = 0x12345678;
abc = i1;
printf("%x\n", abc);//5678 short abc1 = -;
//1000 0000 0000 0010
//1111 1111 1111 1101
//1111 1111 1111 1110(-2)
//1111 1111 1111 1111 1111 1111 1111 1110 i1 = abc1;
printf("%x\n", i1);//fffffffe unsigned short abc2 = ; abc2 = abc2 - ;
//00000000 00000000
//10000000 00000001
//11111111 11111110
//11111111 11111111(65535)
printf("%d\n", abc2);//65535 //00000000 00000000 00001100
//10000000 00000000 00000000 00001010
//11111111 11111111 11111111 11110110
return ; }
内存都是以字节为单位的
1个整数,4个字节
大端对齐 与小端对齐
对于arm,intel 这种x86 构架的复杂指令CPU ,整数在内存是倒着放的,低地址放高位,高地址放低位, 小端对齐
但对于uniux服务器的CPU,更多的是采用大端对齐的方式存放整数
c语言数据类型(一)的更多相关文章
- C语言数据类型的理解
数据类型的定义: 作为一种语言,必然有所谓的语言组成要素,就像日常生活中人们之间的交流一样,首先会有字,字再成词组,再来就是句子,后来呢就是段落等等.当然不同的字,词,句这些在一起,就会有不同的表达效 ...
- R语言数据类型
R语言数据类型[转!!]Zhao-Pace https://www.cnblogs.com/zhao441354231/p/5970544.html R语言用来存储数据的对象包括: 向量, 因子 ...
- Go语言 数据类型,流程控制
Go语言 数据类型,流程控制 人生苦短,Let's Go ! package main // 必须要有一个main包 import "fmt" func main() { fmt. ...
- C语言数据类型_02
C语言数据类型:
- R语言 数据类型
R语言数据类型 通常,在使用任何编程语言进行编程时,您需要使用各种变量来存储各种信息. 变量只是保留值的存储位置. 这意味着,当你创建一个变量,你必须在内存中保留一些空间来存储它们. 您可能想存储各种 ...
- C语言数据类型取值范围
一.获取数据类型在系统中的位数 在不同的系统中,数据类型的字节数(bytes)不同,位数(bits)也有所不同,那么对应的取值范围也就有了很大的不同,那我们怎么知道你当前的系统中C语言的某个数据类型的 ...
- 一:c语言(数据类型和运算符)
#include <stdio.h> /*就是一条预处理命令,它的作用是通知C语言编译系统在对C程序进行正式编译之前需做一些预处理工作.*/ int main() /*C程序就是执行主函数 ...
- -- c语言数据类型总结 --
C语言中的数据类型总结
- 第三课,T语言数据类型(版本TC5.0)
数据类型 TC综合开发工具里使用的是可变类型,就是在程序执行过程中,TC综合开发工具会自动把数据转换为需要的类型,转换失败会出现相应的提示但是在一些特殊的场景下,是需要做类型强制处理,那么这时就需要使 ...
- C语言数据类型
1.概述 C 语言包含的数据类型如下图所示: 2.各种数据类型介绍 2.1整型 整形包括短整型.整形和长整形. 2.1.1短整形 short a=1; 2.1.2整形 一般占4个字节(32位),最高位 ...
随机推荐
- Linux下安装jdk&Jmeter
一.在Linux上部署一个jdk以及Jmeter tips1:Linux安装tar.gz文件到路径 tar -zxvf 软件包名.tar.gz -C 路径 比如我的jdk-8u131-linux- ...
- 十一、springboot(六)整合Thymeleaf
1.添加jar包依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId ...
- [C#]async和await刨根问底
上一篇随笔留下了几个问题没能解决:· 调用IAsyncStateMachine.MoveNext方法的线程何时发起的?· lambda的执行为何先于MoveNext方法?· 后执行的MoveNext方 ...
- java jvm设置http代理参数
-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=1080
- BT.656 NTSC制式彩条生成模块(verilog)
BT.656 NTSC制式彩条生成模块(verilog) 1.知识储备 隔行扫描是将一副图像分成两场扫描,第一场扫描第1,2,5,7...等奇数行,第二场扫描2,4,6,8...等偶数行,并把扫奇数行 ...
- C++和extern C
http://blog.csdn.net/gongmin856/article/details/44228453 C语言中的可变参数:va_list ,va_start,va_arg,va_end h ...
- 源代码安装Apache、Mysql、PHP
源代码软件的优点: 获得最新版,能及时修复bug: 能自行修改和定制: 源代码打包形式: .tar.gz和.tar.bz2格式居多: 完整性校验: md5sum校验工具 ...
- 【转】SQL Server日志文件过大 大日志文件清理方法 不分离数据库
https://blog.csdn.net/slimboy123/article/details/54575592 还未测试 USE[master] GO ALTER DATABASE 要清理的数据库 ...
- 数据仓库专题18-数据建模语言IDEF(转载)
1引言 IDEF的含义是集成计算机辅助制造(Integrated Computer-AidedManufacturing,ICAM)DEFinition.最初的IDEF方法是在美国空军ICAM项目建立 ...
- Maven 专题
目录: Maven的安装 Eclipse安装Maven插件 Nexus私服搭建 Maven+Nexus配置 发布自己的构件(至Nexus) 创建maven多模块工程group 整理中[...] 先放一 ...