C中整数的溢出
/**
* 整数的溢出
*/
#include <stdio.h>
int main(int argc, char *argv[]) {
short i = -24;
// 将-24以无符号int类型输出,实际输出的是
// 其补码转换成的十进制数
printf("将 %d 以无符号整型输出为 %u\n", i, i); // 将 -24 以无符号整型输出为 4294967272
printf("将 %d 以十六进制(小写x)输出为 %x\n", i, i); // 将 -24 以十六进制(小写x)输出为 ffffffe8
printf("将 %d 以十六进制(大写X)输出为 %X\n", i, i); // 将 -24 以十六进制(大写X)输出为 FFFFFFE8
printf("将 %d 以八进制输出为 %o\n", i, i); // 将 -24 以八进制输出为 37777777750
printf("short类型占 %d 个字节\n", sizeof(short)); // short类型占 2 个字节
// long
// 在32位系统下unix系统占4个字节
// 在64位系统下unix系统占8个字节
// 不是很固定,在程序中尽量少用long
printf("long类型占 %d 个字节\n", sizeof(long)); // long类型占 8 个字节
// long long
// 占8个字节,64位,是固定的,对于32位系统,cpu的寄存器
// 是32位,所以计算long long的类型的数据,效率会很低
printf("long long类型占 %d 个字节\n", sizeof(long long)); // long long类型占 8 个字节
printf("unsigned int类型占 %d 个字节\n", sizeof(unsigned int)); // unsigned int类型占 4 个字节
printf("unsigned short类型占 %d 个字节\n", sizeof(unsigned short)); // unsigned short类型占 2 个字节
printf("unsigned long类型占 %d 个字节\n", sizeof(unsigned long)); // unsigned long类型占 8 个字节
printf("unsigned long long类型占 %d 个字节\n", sizeof(unsigned long long)); // unsigned long long类型占 8 个字节
// 整数溢出
// 计算一个整数的时候超过整数能够容纳的最大单位后
// 整数会溢出,溢出的结果是高位被舍弃
unsigned short abc = 0xffff;
abc = abc + 1;
printf("abc = %d\n", abc); // abc = 0
unsigned short n1 = 0xffff;
// n1 += 100 <=> n1 + 1 + 99
n1 += 100;
printf("n1 = %d\n", n1); // n1 = 99
unsigned short n2 = 2;
n2 -= 5;
// 输出的是-3对应的补码的整数值
printf("n2 = %d\n", n2); // n2 = 65533
int n3 = 0x12345678;
// n3为int型占4个字节32位,n2为unsigned short型占2个字节16位
// 将n3赋给n2,将大整型赋给小整型,多出的部分会被截取丢弃掉
n2 = n3;
printf("n2 = %x\n", n2); //n2 = 5678
short n4 = -2;
// 当一个小的整数赋值给一个大的整数时,符号位不会丢失
// 若为正则补0,为负补1
// n3不足的位会自动补1,因为n4为负值,符号位为1
n3 = n4;
printf("n3 = %x\n", n3); // n3 = fffffffe
unsigned short n5 = 0;
// n5为无符号整型,最小值为0,再减一,值为-1
// 最后会输出-1补码 1111 1111 1111 1111
n5 -= 1;
printf("n5 = %x\n", n5); // n5 = ffff
return 0;
}
C中整数的溢出的更多相关文章
- java int整数相乘溢出
int整数相乘溢出 我们计算一天中的微秒数: * * * * ;// 正确结果应为:86400000000 System.out.println(microsPerDay);// 实际上为:50065 ...
- linux中tomcat内存溢出解决办法
用命令 tail -f /root/apache-tomcat-6.0.20/logs/catalina.out(需要找到tomcat路径) 查看日志,查看是否有错误 linux中tomcat内存溢出 ...
- linux中tomcat内存溢出
刚开始测试服务器与线上后台都不能上传10分钟以上的视频,后来只要是视频就不能上传,进入服务器查日志得到如下错误: Caused by: java.lang.OutOfMemoryError: Java ...
- Shell中整数自增的几种方式
Shell中整数自增的几种方式 2016年08月27日 19:07:40 杰瑞26 阅读数:2816 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.n ...
- Java架构师中的内存溢出和内存泄露是什么?实际操作案例!
JAVA中的内存溢出和内存泄露分别是什么,有什么联系和区别,让我们来看一看. 01 内存泄漏 & 内存溢出 1.内存泄漏(memory leak ) 申请了内存用完了不释放,比如一共有 102 ...
- C/C++中整数与浮点数在内存中的表示方式
在C/C++中数字类型主要有整数与浮点数两种类型,在32位机器中整型占4字节,浮点数分为float,double两种类型,其中float占4字节,而double占8字节.下面来说明它们在内存中的具体表 ...
- 谈谈Java中整数类型(short int long)的存储方式
在java中的整数类型有四种,分别是byte short in long,本文重点给大家介绍java中的整数类型(short int long),由于byte只是一个字节0或1,在此就不多说了,对ja ...
- java中整数的默认为int类型的一些问题
thingking in java 读书感悟 作者 :淮左白衣 写于2018年4月8日17:51:44 关于整数的默认类型,以及会产生的一些小问题 涉及基本数据类型的重载 关于整数的默认类型,以及会产 ...
- Tomcat中JVM内存溢出及合理配置及maxThreads如何配置(转)
来源:http://www.tot.name/html/20150530/20150530102930.htm Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚 ...
随机推荐
- 2018-2-13-wpf-绑定-TextLength-
title author date CreateTime categories wpf 绑定 TextLength lindexi 2018-2-13 17:23:3 +0800 2018-2-13 ...
- samba - 为 UNIX 实现的 Windows SMB/CIFS 文件服务器
SYNOPSIS 总览 Samba DESCRIPTION 描述 samba 套件是在 UNIX 系统上实现“服务器信息块”(通常简称 SMB) 协议的一组程序.这个协议有时也称为“通用互联网文件系统 ...
- [Luogu2170]选学霸
这一道题,由于他说,"如果实力相当的人中,一部分被选上,另一部分没有,同学们就会抗议."而要求"既不让同学们抗议,又与原来的M尽可能接近".因此,我们要对实力相 ...
- python request post请求body中有json数组
今天被这个卡了好久,最后解决发现是个小问题,哈哈 记录: 用request发送post请求,原来当body都是普通的字符串和数字时一切顺利,今天遇到了body里面有json数组,结果就是报参数错误 解 ...
- 使用C#登录带验证码的网站
我在上一篇文章中已经讲解了一般网站的登录原来和C#的登录实现,很多人问到对于使用了验证码的网站该怎么办,这里我就讲讲验证码的原理和对应的登录方法.验证码的由来几年前,大部分网站.论坛之类的是没有验证码 ...
- windows系统查看端口占用情况
windows系统,经常发现我们需要使用的端口被别的程序占用.但是我们又不知道是被谁占用,那如何查看端口被哪个程序占用呢?在这里就一起看看如何查看某个端口被占用的解决方法. 开始---->运行- ...
- shell(计算机壳层)(二)
shell 命令常用命令cat 文件名 输出文件内容到基本输出(屏幕 or 加>fileName 到另一个文件)cb 格式化源代码chmod //change mode,改变文件的权限cp co ...
- window 安装iis和使用
一.IIS安装(服务名World Wide Web Publishing Service) 实验环境:win2008R2虚拟机1.首先打开虚拟机,然后选中管理工具->服务器管理器. 2.选中角色 ...
- php 统计每天价格,货币种类,汇总得算法和数据处理 (后端和前段实现自动统计价格和币种类型)
整体实现逻辑介绍 1.对查询数据做一个总体查询,需要根据查询自己主要业务逻辑数据. 2.对总体查询数据和时间和币种类型做三部分数据处理. 3.总体查询数据按照币种和日期组装二维数据对应得键值是价格. ...
- (选做)实现mypwd
选做 实现mypwd 实验内容: 1.学习pwd命令. 2.研究pwd实现需要的系统调用(man -k; grep),写出伪代码. 3.实现mypwd. 4.测试mypwd. 实验步骤: 学习pwd命 ...