关于语法,易错总结就在这

--强制转换类型一律打括号(int)...
今天在刷题的时候遇到了个报错;
就是关于强制转换将double 转换成 long long
由于使用#define int long long
这个句子,我在强制转换的时候直接写成了int(sqrt(...)),然后就疯狂的报错,
我找了半天也不知道哪里的问题,一度以为是max函数自己的问题,甚至还要认为double无法强制转换为long long
后面知道了,使用long long进行强制转换double,long long要打括号
同样
(#define int long long) 后,的int强制转化也需要(int),所以原来应该是(int)(sqrt(...));
所以以后遇到强制转化不论遇到是什么转换类型,转换类型一律打括号();

--关于int& 和 int* 多个变量的声明用‘,’分割写法易错
你需要这样写int& t1 = , &t2 = ;
错误写法: int& t1 = , t2 = ;

--关于移位的越界
当你需要用到(1 << i) 并且i可能大于等于32,这时候(1 << i)就会越界了
正确写法是((long long)(1) << i)

posted @ 2025-05-30 19:10  hky2023  阅读(14)  评论(0)    收藏  举报