初学 C,关于声明变量所处的位置的疑惑 [已解决]

软件和网站开发以及相关技术探讨
回复
cosquidz
帖子: 507
注册时间: 2006-06-19 12:17
来自: 香山县

初学 C,关于声明变量所处的位置的疑惑 [已解决]

#1

帖子 cosquidz » 2007-11-17 8:53

代码: 全选

#include <stdio.h>
int main(void)
{
	int years;
	
	printf("请问您几岁拉,请在终端下输入并回车?\n");
	scanf("%d", &years);
	
	int days;
	days = 365 * years;
	
	printf("你已经 %d 岁了,这么多年里头你经过了 %d 天。辛苦你了!\n", years, days);
	return 0;
}
输出的结果是正确的
但是把

代码: 全选

int days;
days = 365 * years;

代码: 全选

int years;
下面。

代码: 全选

#include <stdio.h>
int main(void)
{
	int years;
	int days;
	days = 365 * years;
	
	printf("请问您几岁拉,请在终端下输入并回车?\n");
	scanf("%d", &years);
	printf("你已经 %d 岁了,这么多年里头你经过了 %d 天。辛苦你了!\n", years, days);
	return 0;
}
却得不到正确的结果。
请多多指教,感谢不尽
上次由 cosquidz 在 2007-11-17 9:35,总共编辑 1 次。
少说话,多做事,切记!!

[测试]解决 Sciom 输入失效的暂时方案

下面都空荡荡了。呵呵
白痴一个
帖子: 1
注册时间: 2007-11-04 0:29

#2

帖子 白痴一个 » 2007-11-17 9:11

因为C是面向过程的语言

如果没有过程函数的话(如for goto break等)C语言是从上向下运行的

先运行上面的 在运行下面的
在这里
#include <stdio.h>
int main(void)
{
int years;
int days;
days = 365 * years;

printf("请问您几岁拉,请在终端下输入并回车?\n");
scanf("%d", &years);
printf("你已经 %d 岁了,这么多年里头你经过了 %d 天。辛苦你了!\n", years, days);
return 0;
}
你把days=365*years;放在了scanf("%d", &years); 的前面
也就是先运行的days = 365 * years; 而这时还没有运行到scanf("%d", &years);所以肯定不会有正确结果
cosquidz
帖子: 507
注册时间: 2006-06-19 12:17
来自: 香山县

#3

帖子 cosquidz » 2007-11-17 9:15

我就写下错误的在先,我就想阿想,更换了一下顺序就成功了
具体怎么解释我不会,我就觉得这样子是正确的了

感谢 ls 的解释,明白了!
少说话,多做事,切记!!

[测试]解决 Sciom 输入失效的暂时方案

下面都空荡荡了。呵呵
vupiggy
帖子: 89
注册时间: 2006-03-19 18:25
来自: FZ->TJ->PEK->AMS->MTL

#4

帖子 vupiggy » 2007-11-17 10:37

come on. 这程序有点离谱噎,闰年根本不考虑了?
头像
yangyang123
帖子: 61
注册时间: 2007-10-26 9:37

#5

帖子 yangyang123 » 2007-11-17 10:46

come on. 这程序有点离谱噎,闰年根本不考虑了?

楼上,这是C Primer Plus上的一个例子,作者明确要求先不考虑闰年的呵呵
cosquidz
帖子: 507
注册时间: 2006-06-19 12:17
来自: 香山县

#6

帖子 cosquidz » 2007-11-17 10:54

yangyang123 写了:come on. 这程序有点离谱噎,闰年根本不考虑了?

楼上,这是C Primer Plus上的一个例子,作者明确要求先不考虑闰年的呵呵
如是说!我就在看那书。
少说话,多做事,切记!!

[测试]解决 Sciom 输入失效的暂时方案

下面都空荡荡了。呵呵
回复