char 造成的数据溢出

#include <stdio.h>

int main(void){

char i;

for(i = 0; i < 255; i++){

printf("i = %d\r\n",i);

}

printf("循环退出了\r\n");

while(1){

; //空循环

}

return 0;

}

分析:

i 从0开始自增:0,1,2 ...一直加到 127

  1. i++ 到128的时候,有符号char溢出,直接变成负数 -128,再自增,-127这样就变成了死循环

如果把char i 改成 unsigned char i 或 int i 就可以正常循环

相关推荐
Rabitebla10 小时前
【Linux 底层原理】进程(十):进程等待详解---从僵尸进程到 wait、waitpid 与 status
linux·c++·笔记·学习·visual studio
西西弗Sisyphus12 小时前
C++ 超时互斥锁(Timed Mutex):std::timed_mutex 与 std::unique_lock
c++
其实防守也摸鱼14 小时前
个人学习 Pwn 思路:从基础到漏洞利用的进阶路径
大数据·前端·人工智能·chrome·算法·安全·网络安全
今天要早睡_15 小时前
C++01_入门基础复习
开发语言·c++
Nuanyt15 小时前
LeetCode Hot 100 链表专题(五)· 2 题(Java)
java·算法·leetcode·链表
Android系统攻城狮15 小时前
Linux FFmpeg深度解析之avcodec_default_get_encode_buffer调用流程与实战(二十八)
linux·运维·服务器·ffmpeg·车载音视频·ffmpeg音视频
程序员初一15 小时前
8080 打不开的四层定位:监听地址、ufw、DOCKER 链、安全组
linux·ssh
程序开发阿元15 小时前
swappiness 60 和 10 差在哪:一台 1C1G 的三轮对比
linux·ssh
无足鸟ICT16 小时前
【RHCA+】mpstat命令(监控CPU)
linux