Linux c编程一站式学习笔记(04), debug
2014-01-02 05:34
357 查看
#include <stdio.h> void foo(void) { int i; printf("%d\n",i); i = 777; } int main(void) { foo(); foo(); return 0; }
这个是"linuxc一站式学习"中的一个小程序,主要是为了讲局部变量的初始化。
但是也有bug分析的哲学在里面,首先,执行这个程序的结果是(gcc编译器):
0
777
看到这个初学者有可能会产上想法说是i被初始化为0,局部变量函数调用结束不会释放。
二者两个都与c99标准不对称
其实如果大家用gcc编译时全部命令会有提示的,如上图
将程序稍微修改之后
#include <stdio.h> void foo(void) { int i; printf("%d\n",i); i = 777; } int main(void) { foo(); printf("HelloWorld!\n"); foo(); return 0; }
这次输出结果不一样。
这个例子很简单,主要是就是想说一下debug的逻辑思维,也就是充分和必要。
看到777和0只是c99标准关于局部变量规定的必要条件,而不是充分条件。
相关文章推荐
- Linux c编程一站式学习笔记(03), 变量注意点
- Linux 下zip包的压缩与解压
- 我的Linux对拍脚本
- Linux系统与程序监控工具atop教程
- Linux下面的LVS服务的配置(群集服务搭建)
- 2013年 Linux领域以及开源界的重要事件盘点
- Linux sed 批量替换字符串和更多用法
- linux下修改网关
- 2014.1.2 学习记录(fdisk、ntfs)
- Linux下dota2启动失败解决办法
- linux下备份文件时间属性少8小时
- Linux用户空间与内核空间
- linux下安装java jdk和mysql
- linux 操作系统进程系列
- Linux系统超过2T磁盘格式化
- CentOS 去掉 TAB键滴滴声
- 深入解读Linux与Android的相互关系
- CentOS安装nodejs,引用。
- LINUX 看门狗
- Deepin Linux Desktop, 截图工具剖析(三) python - namedtuple