鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[函数快查] pow -- 求幂

    [复制链接]
发表于 2020-2-16 10:58:03 | 显示全部楼层
fwinmachao 发表于 2017-9-6 09:52
为什么我的pow(x,y)函数中, x,y如果一个是常量,一个是变量, 就会报错...
[root@Grace fishc]# cat a.c
# ...

编译的时候后面加-lm 就没有问题了
# gcc a.c && ./a.out  改成
# gcc a.c -o a -lm 应该就可以了
#./a 执行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 13:33:01 | 显示全部楼层
lzlxc 发表于 2019-1-22 12:29
不知道你理解了没,这是我的理解。int一般为4个字节,也就是32位,去掉一个符号位,还剩31位,那么他能存 ...

您好,我试了一下,long int也是错误,
但long long int 就变成了
-2147483648
这是为什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-12 20:53:48 | 显示全部楼层
fasdfa 发表于 2016-12-10 12:15
示例中  result = pow(2,31) - 1; 的- 1是什么意思? 不加这个-1 会转换溢出 但用long long int就不会  这 ...

-1不是公式内的内容,只是为了那个二进制转换2的n次方-1的公式吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-13 19:37:27 | 显示全部楼层
带我学c带我飞
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-23 20:07:52 | 显示全部楼层
fasdfa 发表于 2016-12-10 12:15
示例中  result = pow(2,31) - 1; 的- 1是什么意思? 不加这个-1 会转换溢出 但用long long int就不会  这 ...

2的N次方-1,是进制转换,2转10
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 15:20:14 | 显示全部楼层
fasdfa 发表于 2016-12-10 12:15
示例中  result = pow(2,31) - 1; 的- 1是什么意思? 不加这个-1 会转换溢出 但用long long int就不会  这 ...

int的默认为signed int,这个时候的最大整数就是2的31次方-1.但是long long int的最大值更大,所以不会溢出。希望一起坚持学下去啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 15:20:53 | 显示全部楼层
欧阳0116 发表于 2017-4-28 20:31
能告诉我a.out是什么意思吗,为啥不用-o编译啦 我用-o编译也会出来一个执行文件 运算结果也是一样的 有点不 ...

-lm是因为这里需要链接到一个库
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-27 15:23:01 | 显示全部楼层
拒绝绕口令!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 21:27:53 | 显示全部楼层
正好需要
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 22:17:57 | 显示全部楼层
欧阳0116 发表于 2017-4-28 20:31
能告诉我a.out是什么意思吗,为啥不用-o编译啦 我用-o编译也会出来一个执行文件 运算结果也是一样的 有点不 ...

平常用-o指出文件,然后通过指出的文件运行,不用-o指出,系统会自动生成一个默认文件,a.out就是所谓的默认文件
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 22:19:31 | 显示全部楼层

示例中  result = pow(2,31) - 1; 的- 1是什么意思? 不加这个-1 会转换溢出 但用long long int就不会  这是因为什么?
求大神帮助!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 14:35:49 | 显示全部楼层
本帖最后由 2020.5.11 于 2020-5-20 15:07 编辑
小小假余 发表于 2020-5-19 22:19
示例中  result = pow(2,31) - 1; 的- 1是什么意思? 不加这个-1 会转换溢出 但用long long int就不会   ...


- 1 就是字面意思(减1)。int的最大值是2147483647,刚好是2的31次方减1。
如果不减1就会溢出,溢出部分无法显示,就只取int的最大值。
因为int <= long int ,所以用long long int 不会溢出?(我也是新手,试了long int也会溢出,不确定这个说法成不成立)。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-24 09:34:02 | 显示全部楼层
2020.5.11 发表于 2020-5-20 14:35
- 1 就是字面意思(减1)。int的最大值是2147483647,刚好是2的31次方减1。
如果不减1就会溢出,溢出部 ...

谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-30 16:33:37 | 显示全部楼层
sunnyrubik 发表于 2018-10-11 07:57
你好,你的问题解决了吗?我也不懂这个-1耶,如果解决了的话能告诉我为什么吗?谢谢(虽然时间隔得比较 ...

-1这里与进制转换的规律有关
二进制的11转化为十进制为3
二进制的111转化为十进制为7
二进制的1111转化为十进制为15

我们可以发现:
用二进制1的位数替换成幂的指数位,然后减1
2*2-1=3
2*2*2-1=7
2*2*2*2-1=15
即得出对应的十进制数,所以这里是-1

溢出的话可以试试无符号整型,前面加unsigned
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-4 22:18:25 | 显示全部楼层
还挺简单的!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-10 16:34:35 | 显示全部楼层
谢谢小甲鱼~我学会怎么使用pow了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-10 21:01:27 | 显示全部楼层
fff
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-9-21 06:20:33 From FishC Mobile | 显示全部楼层
可以可以,学会了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-28 16:55:01 | 显示全部楼层
sunnyrubik 发表于 2018-10-11 07:57
你好,你的问题解决了吗?我也不懂这个-1耶,如果解决了的话能告诉我为什么吗?谢谢(虽然时间隔得比较 ...

减的一个是用来表示0的,以我的理解比如:-2,-1,0,1占了四个位置,表示负数的就有2个位置,表示正数的只有“2-1”个位置。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-29 13:31:33 | 显示全部楼层
thank U C
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 11:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表