作者sean72 (.)
站内Programming
标题[问题] 两个C的问题请教 scanf() & Macro
时间Sat Feb 12 16:24:27 2011
1
int main ()
{
char str [80];
int i;
printf ("Enter your family name: ");
scanf ("%s",str);
printf ("Enter your age: ");
scanf ("%d",&i);
为什麽读取的资料是char的时候 写成str 而非 &str
为什麽读取的资料是int的时候 就要 &i
不论读取char 或是 int 应该都从记忆体的地址去取值才对
既然如此 应该两个都需要&才对吧?
2
#define square(x) x * x
main() {
int z = 3;
printf("%d\n", square(z + 1));
}
为什麽印出来的结果是 7 而不是 16?
感谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 69.205.68.125
1F:推 chchwy:pass by value,你写过函数就知道140.115.158.103 02/12 17:25
2F:推 COLDTURNIP:#define square(x) (x * x) 试试就知 118.166.78.221 02/12 18:02
3F:→ james732:第一个问题:str是char array而不是char 1.174.129.36 02/12 18:02
4F:→ james732:你可以想想改成 char str; 的差别是什麽 1.174.129.36 02/12 18:04
5F:→ james732:2相当於printf("%d\n", 3+1 * 3+1); 1.174.129.36 02/12 18:06
6F:→ james732:先乘除後加减才会冒出7 1.174.129.36 02/12 18:07
7F:→ james732:改成 #define square(x) (x) * (x) 即可 1.174.129.36 02/12 18:07
8F:→ sean72:感谢 69.205.68.125 02/13 06:24