问题1:下面是一段程序和执行的结果,具体原因是为什么呢?
-
#include<stdio.h>
-
#include<string.h>
-
//typedef unsigned char u8;
-
int main(void)
-
{
-
int body[10];
-
memset(body, 0, sizeof(body));
-
scanf("%d",body);
-
printf("%d\n",body);
-
-
return 0;
-
}
代码改成如下,肯定是行的
-
#include<stdio.h>
-
#include<string.h>
-
typedef unsigned char u8;
-
int main(void)
-
{
-
u8 body[10];
-
int num;
-
scanf("%d",&num);
-
sprintf(body,"%d",num);
-
printf("%s\n", body);
-
return 0;
-
}
疑问是:第一个代码到底错在哪呢,是不是当输入的时候(scanf)int型的数组不能用数组名作为首地址那样输入,printf也不能那样直接通过数组名来输出,那么是为什么呢?
问题2:
-
#include<stdio.h>
-
#include<string.h>
-
#include<math.h>
-
typedef unsigned char u8;
-
int main(void)
-
{
-
char body[200];
-
memset(body, 0, sizeof(body));
-
scanf("%s",body);
-
//if((u8)body % (u8)5 == 0)
-
if((u8)body >= 0)
-
puts("haha");
-
return 0;
-
}
注释的if ,就不会出来了(编译都能通过,会有类型不兼容的warning),这个莫非说明从char强制转化为整形 之后能进行关系运算,不能进行算术运算????
先记在这里,最终还是会搞明白的。
2013.2.20
今天再一次看这篇博文,突然发现自己之前真的有点傻啊,数组在scanf的时候,当然是不能直接通过数组名来进行,而是要通过循环
对每个元素的输入。
通过对这篇博文的阅读,会更加明白为什么不能直接用数组名。(数组名是常量,而scanf里面的地址量输入的是变量的地址)
http://blog.163.com/baobao_zhang@126/blog/static/4825236720079410517449/
看完上面的博客还是觉得很奇怪,貌似是可以的。哎。。。
阅读(1088) | 评论(0) | 转发(2) |