84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
认证0级讲师
在 C 里并不会报错,只是会有警告:
>>> gcc -o a a.c a.c: 在函数‘main’中: a.c:8:7: 警告:从不兼容的指针类型赋值 [-Wincompatible-pointer-types] a = b; ^ a.c:5:19: 警告:变量‘a’被设定但未被使用 [-Wunused-but-set-variable] volatile int *a = NULL; ^ >>> cp a.c a.cpp >>> g++ -o a a.cpp a.cpp: 在函数‘int main()’中: a.cpp:8:9: 错误:不能在赋值时将‘long int*’转换为‘volatile int*’ a = b; ^
警告的原因很明确,int 和 long 不兼容。C++ 里会报错,因为 C++ 的类型系统更严格。
请把问题打上正确的标签,以免引来非对口专业的人,浪费双方的时间。
和volatile无关。int和long本身就是不同类型(可以长度不同)啊,你这样传参驴唇不对马嘴当然报错了。先确认下你代码逻辑有没有问题,然后再谨慎使用类型转换吧。
volatile
int
long
在 C 里并不会报错,只是会有警告:
警告的原因很明确,int 和 long 不兼容。C++ 里会报错,因为 C++ 的类型系统更严格。
请把问题打上正确的标签,以免引来非对口专业的人,浪费双方的时间。
和
volatile
无关。int
和long
本身就是不同类型(可以长度不同)啊,你这样传参驴唇不对马嘴当然报错了。先确认下你代码逻辑有没有问题,然后再谨慎使用类型转换吧。