09-01 关于;;和“参数”: 从“time_t”转换到“unsigned int”,可能丢失数据和C 语言代码出错为什么显示「烫烫烫」

2021-03-22 07:24

阅读:635

标签:没有初始化   code   字符串   64位   lazy   警告   转换   为什么   初始   

关于出现 ;; ?

  单独一个分号相当于空语句,不影响,但不规范。

例:int i;; 等价于

  int i;

  ;

关于从“time_t”转换到“unsigned int”,可能丢失数据?

  这个警告是由于新版本的VC里time_t是64位的,而srand接受32位的unsigned int,所以会丢失数据。

  改成  srand((unsigned)time(NULL));  强制转换time_t到unsigned int就可以了。

关于C 语言代码出错为什么显示「烫烫烫」?

  局部变量在没有初始化时, C语言规范要求是随机值。

  但VC系列没有按照这个规定来做, 而是把没有初始化的栈空间赋值为0xCC。

  于是 在输出未初始化的局部变量字符串时,就会输出

  0xCC对应的字符. 而两位代表一个汉字, 0xCCCC就是汉字烫。

  可以将的结构体中定义的字符数组都初始化为0

技术图片

09-01 关于;;和“参数”: 从“time_t”转换到“unsigned int”,可能丢失数据和C 语言代码出错为什么显示「烫烫烫」

标签:没有初始化   code   字符串   64位   lazy   警告   转换   为什么   初始   

原文地址:https://www.cnblogs.com/dongjiaonakeshu/p/13891764.html


评论


亲,登录后才可以留言!