| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4926 人关注过本帖
标题:[求助]求模运算
取消只看楼主 加入收藏
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
 问题点数:0 回复次数:8 
[求助]求模运算
大家都知道%在c中是求模的运算符,可是在我这里为什么得不出正确结果呢?

/* 求一个数的模 */
unsigned int CalcMod(unsigned long long int anum)
{
return ( anum % 13);
}

/*-----------------------主函数------------------------------------------*/
int main( int argc,char * argv[] )
{

unsigned long long int value;
unsigned int mod_value;
char str[12]={"11N200509N"};

value=ConvertValue( str ); /* ConvertValue是已经定义好的:unsigned long long int ConvertValue(char * stringp) */
mod_value=CalcMod( value );
printf( "%s,%ld,%u\n" , str , value , mod_value );

system( "pause" );
return ( 0 );
}

怎么mod_value总是0阿?而且ConvertValue()经过测试是正确的,更让人摸不着头脑了。
搜索更多相关主题的帖子: int 运算 ConvertValue anum unsigned 
2006-01-16 16:04
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 
以下是引用knocker在2006-1-16 20:16:00的发言:
printf( "%s,%ld,%u\n" , str , value , mod_value );

|
unsigned long long int value;

这个地方没有发现问题。如果写成%ul的话,它就会在一串数字后面加上l了。
经过测试value的值,%ld的用法没有错误。

主要是mod_value总是0。

2006-01-17 09:20
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 

如果str[12]={"11N200509N"}
那么value=1212005101,mod_value=8,
程序运行到CalcMod()都是正确的,
怎么显示的时候就是0了?

[此贴子已经被作者于2006-1-17 9:31:21编辑过]

2006-01-17 09:29
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 
回复:(ryxhh)以下是引用martinmcx在2006-1-16 16:0...
大哥,先别管unsigned long long int 是什么类型,它在我的编译器上是合法的,可以存储双倍long长度的无符号整数。而且value得出的结果也是正确的。

我的问题是在函数CalcMod()中运算的结果是正确的,返回值也是正确的,怎么显示的时候就错了?

[此贴子已经被作者于2006-1-17 9:45:43编辑过]

2006-01-17 09:36
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 
回复:(martinmcx)回复:(ryxhh)以下是引用martin...
看看调试信息:
图片附件: 游客没有浏览图片的权限,请 登录注册

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

2006-01-17 09:42
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 
回复:(martinmcx)回复:(martinmcx)回复:(ryxh...
str又换了个值:
图片附件: 游客没有浏览图片的权限,请 登录注册

2006-01-17 10:10
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 
以下是引用knocker在2006-1-17 10:50:00的发言:
别换了

printf( "%s,/*%ld,*/%u\n" , str ,/* value ,*/ mod_value );

试试,如果还是0,我吃了它


不明白/*%ld,*/和/*value,*/是什么意思?是不是将他们注释掉,还是说这里出了问题叫我着重注意?

如果叫我把他们去掉的话,请告诉我这样做有什么意义?
如果叫我着重注意的话,请看看我发的图。问题是不是出在这里了?

2006-01-17 11:22
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 
有问题就直说,别磨磨唧唧的。
2006-01-17 11:24
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
得分:0 
回复:(martinmcx)以下是引用knocker在2006-1-17 10...
我把它们去掉了,结果就对了。
为什么?请告诉我。谢谢。
2006-01-17 11:29
快速回复:[求助]求模运算
数据加载中...
 
   



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

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