本人在LINUX环境下做小实验:(关于自增IP地址的代码)
#include<stdio.h>
int main()
{
int i;
for(i=0;i<3;i++)
{
char ip[20] = "192.168.0.";
ip[10] = (char)i; //编译不通过
ip[11] = '\0';
printf("%s\n",ip);
}
}
但是注释处改成
/* ip[10] = '0'+i; */
就正确了。
哪为大侠解释下为什么?????
PS:不采纳复制来的垃圾答案,不知所云的那种。
我之前也用过直接赋值: /* ip[10]=i; */
但是结果是 / 192.168.0.(空) /
/ 192.168.0.(乱码)/
/ 192.168.0.(乱码)/
我的编译环境是 gcc 2.7-2 ,fc8(2.6.23),难道是编译器的版本问题???
再次强调下,我已经知道正确的做法了,但是不明白的是,为什么这个正确,请把原理,原因说下好吗????谢谢大侠们的关注,你们的热情让我很感动。