摘要: 中午吃完饭照例去云风大神的blog上去逛一圈,果然有新发现,如题:1 char buff[3];2 char data;3 sprintf(buff, "%02x", data); 咋一看,data最大等于0xff应该不会错,可以如果编译器默认char为signed char,而且data = -1,以十六进制看应该为0xff,这么看也没有错。 关键在于变参,在C语言的变参中,小于int长度的数据压栈时一律扩展为int型, 那么问题来了,符号型数据在进行类型扩展时是会扩展符号的,这么看其实data = -1;sprintf(buff, "%02x", d 阅读全文
posted @ 2014-01-16 21:23 重归混沌 阅读(647) 评论(2) 推荐(1) 编辑