| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4926 人关注过本帖
标题:[求助]求模运算
只看楼主 加入收藏
martinmcx
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2005-12-26
收藏
 问题点数:0 回复次数:13 
[求助]求模运算
大家都知道%在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
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
printf( "%s,%ld,%u\n" , str , value , mod_value );

|
unsigned long long int value;

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-01-16 20:16
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
ryxhh
Rank: 1
等 级:新手上路
威 望:1
帖 子:63
专家分:0
注 册:2005-12-18
收藏
得分:0 
以下是引用martinmcx在2006-1-16 16:04:00的发言:
大家都知道%在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()经过测试是正确的,更让人摸不着头脑了。

程序中有一个问题不明白:
1. unsigned long long int value; 这算什么类型??????


2006-01-17 09:31
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
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
别换了

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

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



九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-01-17 10:50
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
[QUOTE]大哥,先别管unsigned long long int 是什么类型,它在我的编译器上是合法的,可以存储双倍long长度的无符号整数。[/QUOTE]

你还不知道自己错在什么地方么?

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2006-01-17 10:53
快速回复:[求助]求模运算
数据加载中...
 
   



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

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