fwinmachao 发表于 2017-9-6 09:52
为什么我的pow(x,y)函数中, x,y如果一个是常量,一个是变量, 就会报错...
# cat a.c
# ...
编译的时候后面加-lm 就没有问题了
# gcc a.c && ./a.out改成
# gcc a.c -o a -lm 应该就可以了
#./a 执行
lzlxc 发表于 2019-1-22 12:29
不知道你理解了没,这是我的理解。int一般为4个字节,也就是32位,去掉一个符号位,还剩31位,那么他能存 ...
您好,我试了一下,long int也是错误,
但long long int 就变成了
-2147483648
这是为什么
fasdfa 发表于 2016-12-10 12:15
示例中result = pow(2,31) - 1; 的- 1是什么意思? 不加这个-1 会转换溢出 但用long long int就不会这 ...
-1不是公式内的内容,只是为了那个二进制转换2的n次方-1的公式吧
带我学c带我飞
fasdfa 发表于 2016-12-10 12:15
示例中result = pow(2,31) - 1; 的- 1是什么意思? 不加这个-1 会转换溢出 但用long long int就不会这 ...
2的N次方-1,是进制转换,2转10
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的最大值更大,所以不会溢出。希望一起坚持学下去啊
欧阳0116 发表于 2017-4-28 20:31
能告诉我a.out是什么意思吗,为啥不用-o编译啦 我用-o编译也会出来一个执行文件 运算结果也是一样的 有点不 ...
-lm是因为这里需要链接到一个库
拒绝绕口令!!!
正好需要
欧阳0116 发表于 2017-4-28 20:31
能告诉我a.out是什么意思吗,为啥不用-o编译啦 我用-o编译也会出来一个执行文件 运算结果也是一样的 有点不 ...
平常用-o指出文件,然后通过指出的文件运行,不用-o指出,系统会自动生成一个默认文件,a.out就是所谓的默认文件
示例中result = pow(2,31) - 1; 的- 1是什么意思? 不加这个-1 会转换溢出 但用long long int就不会这是因为什么?
求大神帮助!
本帖最后由 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也会溢出,不确定这个说法成不成立)。
2020.5.11 发表于 2020-5-20 14:35
- 1 就是字面意思(减1)。int的最大值是2147483647,刚好是2的31次方减1。
如果不减1就会溢出,溢出部 ...
谢谢
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
还挺简单的!!!
谢谢小甲鱼~我学会怎么使用pow了
fff
可以可以,学会了
sunnyrubik 发表于 2018-10-11 07:57
你好,你的问题解决了吗?我也不懂这个-1耶,如果解决了的话能告诉我为什么吗?谢谢(虽然时间隔得比较 ...
减的一个是用来表示0的,以我的理解比如:-2,-1,0,1占了四个位置,表示负数的就有2个位置,表示正数的只有“2-1”个位置。
thank U C