当前位置: 代码迷 >> C语言 >> [求助]求模运算
  详细解决方案

[求助]求模运算

热度:132   发布时间:2006-01-16 16:04:00.0
[求助]求模运算
大家都知道%在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  

----------------解决方案--------------------------------------------------------
printf( "%s,%ld,%u\n" , str , value , mod_value );

|
unsigned long long int value;
----------------解决方案--------------------------------------------------------
以下是引用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。
----------------解决方案--------------------------------------------------------

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

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


----------------解决方案--------------------------------------------------------
以下是引用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; 这算什么类型??????

----------------解决方案--------------------------------------------------------

回复:(ryxhh)以下是引用martinmcx在2006-1-16 16:0...
大哥,先别管unsigned long long int 是什么类型,它在我的编译器上是合法的,可以存储双倍long长度的无符号整数。而且value得出的结果也是正确的。

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

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


----------------解决方案--------------------------------------------------------
回复:(martinmcx)回复:(ryxhh)以下是引用martin...
看看调试信息:



----------------解决方案--------------------------------------------------------
回复:(martinmcx)回复:(martinmcx)回复:(ryxh...
str又换了个值:


----------------解决方案--------------------------------------------------------
别换了

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

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



----------------解决方案--------------------------------------------------------
[QUOTE]大哥,先别管unsigned long long int 是什么类型,它在我的编译器上是合法的,可以存储双倍long长度的无符号整数。[/QUOTE]

你还不知道自己错在什么地方么?
----------------解决方案--------------------------------------------------------
  相关解决方案