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位),最高位 ...
随机推荐
- CSS vertical-algin的使用
一.什么vertical-algin vertical的意思就是垂直,algin是对齐的意思,连起来就是“垂直对齐方式”,接下来看看vertical-algin有哪些属性,打开浏览器一看 vertic ...
- java 连接 hiveserver2 例子
启动了 hiveserver2 以后才能使用 程序连接 .目前的 使用的 是 server2 版本.和以前的版本驱动包名不同: package hadoop; import java.sql.Co ...
- Jenkins进阶-用户权限管理(10)
在版本发布的由于大家的分工不同,所以想通过控制用户的账号达到权限管理,对每个角色进行权限控制,最初通过"项目矩阵授权策略"的策略对每个项目进行单一的权限控制,当时也满足了效果,随着 ...
- PL/SQL Developer显示中文乱码
PL/SQL Developer显示中文乱码,可能是oracle客户端和服务器端的编码方式不一样. 解决方法: Select userenv('language') from dual; 设置环境变量 ...
- linux mv命令详解
Linux mv命令 Linux mv命令用来为文件或目录改名.或将文件或目录移入其它位置. 用法: mv [选项]... [-T] 源文件 目标文件 mv [选项]... 源文件... 目录 mv ...
- Linux shell脚本读取用户输入的参数
新建一个test.sh文件 #!/bin/sh echo "1 : For Test" echo "2 : For nohup &" whiletrue ...
- Spring Cloud(Dalston.SR5)--Feign 声明式REST客户端
Spring Cloud 对 Feign 进行了封装,集成了 Ribbon 并结合 Eureka 可以实现客户端的负载均衡,Spring Cloud 实现的 Feign 客户端类名为 LoadBala ...
- Centos7 环境下 Python2.7 换成 Python3.7 运行 scrapy 应用所遇到的问题记录
参考网友的安装过程 Linux系统Centos安装Python3.7 设置Python默认为Python3.7 mv /usr/bin/python /usr/bin/python.bak ln -s ...
- SQLSERVER2008 存储过程基本语法
SQLSERVER2008 存储过程基本语法 来源:https://www.cnblogs.com/tlduck/p/5462399.html 一.定义变量--简单赋值declare @a intse ...
- Intellij IDEA神器值得收藏的小技巧
概述 Intellij IDEA真是越用越觉得它强大,它总是在我们写代码的时候,不时给我们来个小惊喜.出于对Intellij IDEA的喜爱,我决定写一个与其相关的专栏或者系列,把一些好用的Intel ...