[求助]求模运算
大家都知道%在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()经过测试是正确的,更让人摸不着头脑了。
----------------解决方案--------------------------------------------------------
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;
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()经过测试是正确的,更让人摸不着头脑了。
大家都知道%在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]
你还不知道自己错在什么地方么?
----------------解决方案--------------------------------------------------------