关于变量和常数在数值和运行效率方面的一些区别
  • 板块学术版
  • 楼主Steven__ChenNightjar
  • 当前回复16
  • 已保存回复16
  • 发布时间2022/7/1 19:15
  • 上次更新2023/10/27 22:08:41
查看原帖
关于变量和常数在数值和运行效率方面的一些区别
186757
Steven__ChenNightjar楼主2022/7/1 19:15

数值方面

对于下面这份代码

#include <cstdio>
using namespace std;
int k = 64;
const int k1 = 64;
int main()
{
    printf("%llu\n", (1ull << 64) - 1);
    printf("%llu\n", (1ull << k) - 1);
    printf("%llu", (1ull << k1) - 1);
    return 0;
}

运行后可以发现,第一行输出为18446744073709551615,第二行输出为0,第三行输出为18446744073709551615

我不太明白为什么会有这样的差别

运行效率方面

这里有三份代码

int mod = 1000000007;
a = a % mod;
int mod = 1000000007;
a = a % 1000000007;
const int mod = 1000000007;
a = a % mod;

第一份代码运行起来是比第二份和第三份代码慢的,而第二份和第三份代码运行效率相近。

例如提交记录1提交记录2,我仅仅将mod改为1000000007,代码运行时间就大幅降低。

百度上不好搜索,所以我只能来问问(

请问各位大佬知道这是怎么一回事吗?(也许跟运算中的类型转换有关?)

2022/7/1 19:15
加载中...