| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1469 人关注过本帖, 1 人收藏
标题:求解为什么这个结果输出为负且很大?
只看楼主 加入收藏
莫说
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2019-3-25
结帖率:50%
收藏(1)
 问题点数:0 回复次数:5 
求解为什么这个结果输出为负且很大?
#include<stdio.h>
main()
{ int n;
    int i1,i2,i3,i4, m;
    printf("input a integer(10000-9999):\n");
    scanf("%d",&n);
    i1=m%10;
    i2=m%100/10;
    i3=m/100%10;
    i4=m/1000;
    m=i1+i2+i3+i4;
    printf("The sum is:%d",m);
}
搜索更多相关主题的帖子: 结果 输出 int printf scanf 
2019-03-26 11:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
m 未赋值就读取
属于 未定义行为。
2019-03-26 12:03
鱼儿海
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:77
专家分:194
注 册:2013-8-14
收藏
得分:0 
路过的,谢谢
2019-03-29 16:56
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
1、有的书上说,m定义时未赋值,系统会给赋一个随机值,也称垃圾值。
int m;
printf("%d",m);
每次输出的都可能不同。

2、程序逻辑有问题,要求用户输入n之后,摆在一边凉快了,却用m做了很多事。这程序原来的代码应该是这样的:
#include<stdio.h>
main()
{ int n;
    int i1,i2,i3,i4, sum;
    printf("input a integer(10000-9999):\n");
    scanf("%d",&n);
    i1=n%10;
    i2=n%100/10;
    i3=n/100%10;
    i4=n/1000;
    sum=i1+i2+i3+i4;
    printf("The sum is:%d",sum);
}

我把m改为sum,就比较好理解了,它的运行结果以输入9999为例,应该是36。

[此贴子已经被作者于2019-3-31 09:59编辑过]


报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-03-29 17:28
不懂才问
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:大草原
等 级:贵宾
威 望:29
帖 子:1503
专家分:6593
注 册:2010-7-5
收藏
得分:0 
1、有的书上说,m定义时未赋值,系统会给赋一个随机值,也称垃圾值。
int m;
printf("%d",m);
每次输出的都可能不同。


今天学到do循环,才发现这个问题。是我读了一本假书,还是编译器不同呢?

图片附件: 游客没有浏览图片的权限,请 登录注册


验证:
图片附件: 游客没有浏览图片的权限,请 登录注册

报告老师,我低头不是因为我在装低调,是你问的问题,我真的不会答,,,
2019-03-31 10:02
幻紫灵心
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山咔咔里面
等 级:贵宾
威 望:53
帖 子:396
专家分:2640
注 册:2018-3-30
收藏
得分:0 
回复 5楼 不懂才问
声明变量的时候并不是给它随机分配值,而是给它分配地址。
没初始化的时候,输出的是那个地址本来的值,那个值是不确定的,也可以说是随机的。
你用循环声明变量,不初始化就输出,输出的就是那个地址本来的值。
你可以试试 查看地址 printf("%p %d\n",&j,j);
或者在别的地方改变那个地址的值。
程序代码:
#include<stdio.h>
int main()
{
    int i,n=1,m=2;
    for(i=0;i<10;i++) {
        int j;
        printf("%p %d\n",&j,j);
        j=i;
    }
    return 0;
}

saber,别哭.
2019-03-31 13:11
快速回复:求解为什么这个结果输出为负且很大?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033872 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved