| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1222 人关注过本帖
标题:"%"模的应用,请教
只看楼主 加入收藏
lhj2005
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2007-1-23
收藏
 问题点数:0 回复次数:18 
"%"模的应用,请教

小弟有3个问题请教分析
1)
i=n/100;
j=n/10%n;
k=n%10;
如果n=146的话
那 i , j ,k 各等于i=1, j=4 ,k=6对吗
为什么啊???

2)单精度float和双精度double有什么区别吗,能否拿几个数值说明下


3)条件表达式,如何判断真假
比如 int a=2; float b=5.2;
则 !a?2*b:b 的结果为什么是返回b,而不是2*b
!a怎么判断真和假啊???


[此贴子已经被作者于2007-1-29 22:12:55编辑过]

搜索更多相关主题的帖子: 应用 float 单精度 col 
2007-01-29 21:48
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
i=1,j=14,k=6

代码如下:

#include<stdio.h>
void main()
{
int n=146,i,j,k;
i=n/100;
j=n/10%n;
k=n%10;
printf("i=%d,j=%d,k=%d\n",i,j,k);
}


我现在跟你解释下吧

n=146=140+6(你能看明白是什么意思吗?)

i=n/100=1.46

由于我在定义的时候i是整形变量,所以i就只取小数点前的一位数字

j=n/10%n=(n/10)%n

n/10=14.6

然后取模预算结果就是j=14.6,但是j定义的时候是整形变量(同上)

k=n%10

这里k=(140+6)%10=140%10+6%10

因为140能被10整除,所以取模结果就是0

而6不能被10整除,所以取模结果就是6

自我放逐。。。
2007-01-29 22:10
lhj2005
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2007-1-23
收藏
得分:0 

"j=n/10%n=(n/10)%n

n/10=14.6

然后取模预算结果就是j=14.6,但是j定义的时候是整形变量(同上)"

n/10=14.6
然后(n/10)%n=???

好象不应该是14.6了吧,
如果是14.6的话,那这里的模好象没有意义的啊

我要的效果是j去的是十位是的数
是不是应该改成j=n/10%10 就好了啊?

[此贴子已经被作者于2007-1-29 22:19:19编辑过]

2007-01-29 22:16
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
float的比特位数是32,有效数字是6-7,数值范围是 -3.4*10^(-38)——3.4*10^38

double的比特位数是64,有效数字是15—16,数值范围是 -1.7*10^(-308)——1.7*10^(308)

long double的比特位数是128,有效数字是18-19,数值范围是 -1.2*10^(-4932)——1.2*10^(4932)

自我放逐。。。
2007-01-29 22:21
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
以下是引用lhj2005在2007-1-29 22:16:38的发言:

"j=n/10%n=(n/10)%n

n/10=14.6

然后取模预算结果就是j=14.6,但是j定义的时候是整形变量(同上)"

n/10=14.6
然后(n/10)%n=???

好象不应该是14.6了吧,
如果是14.6的话,那这里的模好象没有意义的啊

我要的效果是j去的是十位是的数
是不是应该改成j=n/10%10 就好了啊?


取模只是取小数点前的模

和小数点后的数字没有关系


这和数学有点不一样

你可以自己上机试下就知道了

[此贴子已经被作者于2007-1-29 22:25:06编辑过]


自我放逐。。。
2007-01-29 22:24
lhj2005
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2007-1-23
收藏
得分:0 

[QUOTE]取模只是取小数点前的模

和小数点后的数字没有关系[/QUOTE]

n=146;
n%10=6;这个很好理解


n/10%n是什么意思啊???

是不是(n/10)=14.6 再14.6%n是不是就是14.6%146啊???

[此贴子已经被作者于2007-1-29 22:29:22编辑过]

2007-01-29 22:28
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
3)条件表达式,如何判断真假
比如 int a=2; float b=5.2;
则 !a?2*b:b 的结果为什么是返回b,而不是2*b
!a怎么判断真和假啊???

这个就更简单了

a=2,那么!a=0

!a?2*b:b

如果问号前的表达式是非0的话,那表达式就为真,就执行红色部分

如果问号前的表达式是0的话,就表达式就为假,就执行问号后的黑色部分

自我放逐。。。
2007-01-29 22:28
lhj2005
Rank: 1
等 级:新手上路
帖 子:230
专家分:0
注 册:2007-1-23
收藏
得分:0 

[QUOTE]如果问号前的表达式是非0的话,那表达式就为真,就执行红色部分

如果问号前的表达式是0的话,就表达式就为假,就执行问号后的黑色部分[/QUOTE]

这个我了解,我不清楚的是,为什么a=2的话 !a=0???


!是非的意思吧

2007-01-29 22:31
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
以下是引用lhj2005在2007-1-29 22:28:40的发言:

取模只是取小数点前的模

和小数点后的数字没有关系



n=146;
n%10=6;这个很好理解


n/10%n是什么意思啊???

是不是(n/10)=14.6 再14.6%n是不是就是14.6%146啊???



因为它们都是算术运算,所以它们的优先级是一样的

所以运算的时候是从左到右边

我用括号,是为了让你看明白

也就是说先执行n/10,再执行取模运算


自我放逐。。。
2007-01-29 22:31
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
以下是引用lhj2005在2007-1-29 22:31:05的发言:

如果问号前的表达式是非0的话,那表达式就为真,就执行红色部分

如果问号前的表达式是0的话,就表达式就为假,就执行问号后的黑色部分



这个我了解,我不清楚的是,为什么a=2的话 !a=0???


!是非的意思吧

!是非的意思

在C语言中

任何 非0 的数字,执行‘!’运算的时候,就都变成了0


自我放逐。。。
2007-01-29 22:33
快速回复:"%"模的应用,请教
数据加载中...
 
   



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

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