鱼C论坛

 找回密码
 立即注册
查看: 1619|回复: 10

[已解决]关于C语言变量在前在后的问题

[复制链接]
发表于 2021-7-12 18:29:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
C语言自选萌新

在程序将厘米转化为英尺英寸中,我一开始写的

#include<stdio.h>
int main()
{
        int cm;
        int foot = cm/30.48;
        int inch = (cm/30.48-foot)*12;
         scanf("%d",&cm);
         printf("%d %d",foot,inch);
         return 0;
}
这时候无论输入什么都是0
然后把foot和inch改到下几行去


#include<stdio.h>
int main()
{
        int cm;
         scanf("%d",&cm);
         int foot = cm/30.48;
        int inch = (cm/30.48-foot)*12;
         printf("%d %d",foot,inch);
         return 0;
}

这个时候就可以正常运行,可是变量不都是一样的吗,我记得有些编程软件甚至必须变量放前面(是这样吗?),为什么会出现这种情况呢
最佳答案
2021-7-12 21:36:43
2621079457 发表于 2021-7-12 21:29
能具体说一下吗,我也再去回头看看视频

int cm;
int foot = cm/30.48;
int inch = (cm/30.48-foot)*12;

很简单呀,第一行定义了cm,第二行直接用 cm / 30.48
问题是 cm 的内容是什么?
int cm = 10;
这样 cm 的内容是10
int cm;
这样 cm 的内容是未知的,因为你没有给 cm 一个值,一个未知数除以 30.48 等于什么?
实际上在计算机中没有未知数,在计算机中是随机数
你这样写 int cm;
系统会给cm一个随机的值
也就是 一个随机数 / 30.48
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-7-12 18:48:04 From FishC Mobile | 显示全部楼层
赋完值才能使用,这不是狠基础的知识
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-12 19:47:53 | 显示全部楼层
第一段这里num没有赋值就开始运算了(int num这里并没有赋值,仅仅是声明)所以在后面运算时就把num当0了。
欢迎追问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-12 19:52:49 | 显示全部楼层
先定义初始化再使用呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-12 21:17:30 | 显示全部楼层
wp231957 发表于 2021-7-12 18:48
赋完值才能使用,这不是狠基础的知识

刚学两三天,网课有时候漏讲或者自己漏听啥的就只好来找大佬们补补了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-12 21:27:02 | 显示全部楼层
万千只cnm 发表于 2021-7-12 19:52
先定义初始化再使用呀

能具体说一下吗,我也再去回头看看视频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-12 21:29:01 | 显示全部楼层
青出于蓝 发表于 2021-7-12 19:47
第一段这里num没有赋值就开始运算了(int num这里并没有赋值,仅仅是声明)所以在后面运算时就把num当0了。 ...

能具体说一下吗,我也再去回头看看视频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-12 21:36:43 | 显示全部楼层    本楼为最佳答案   
2621079457 发表于 2021-7-12 21:29
能具体说一下吗,我也再去回头看看视频

int cm;
int foot = cm/30.48;
int inch = (cm/30.48-foot)*12;

很简单呀,第一行定义了cm,第二行直接用 cm / 30.48
问题是 cm 的内容是什么?
int cm = 10;
这样 cm 的内容是10
int cm;
这样 cm 的内容是未知的,因为你没有给 cm 一个值,一个未知数除以 30.48 等于什么?
实际上在计算机中没有未知数,在计算机中是随机数
你这样写 int cm;
系统会给cm一个随机的值
也就是 一个随机数 / 30.48
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-7-12 21:50:21 | 显示全部楼层
2621079457 发表于 2021-7-12 21:27
能具体说一下吗,我也再去回头看看视频

你带钱包去买东西 假设要100块  

你没初始化(相当于钱包里不知道有多少钱。)
就去买东西(使用) 编译器怎么知道你钱够不够呢  ,就会出错

你先告诉编译器你有200块 就能买了啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-12 22:23:50 | 显示全部楼层
人造人 发表于 2021-7-12 21:36
int cm;
int foot = cm/30.48;
int inch = (cm/30.48-foot)*12;

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-7-12 23:32:48 | 显示全部楼层
万千只cnm 发表于 2021-7-12 21:50
你带钱包去买东西 假设要100块  

你没初始化(相当于钱包里不知道有多少钱。)

谢谢!理解了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-21 19:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表