我使用的是Ubuntu 16.04.5和GCC 5.4.0版.
我在玩sizeof()操作员,写下面的代码:
#include <stdio.h>
int main(int argc, char *argv[]){
long int mylint = 31331313131.1313;
printf("size of long int is %d\n", sizeof(mylint));
printf("size of long int is %d\n", sizeof(long int));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用gcc -o ... ...命令编译并期待:
size of long int is 8
size of long int is 8
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
fl_double_lint.c: In function ‘main’:
fl_double_lint.c:11:9: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]
printf("size of long …Run Code Online (Sandbox Code Playgroud) 我是C编程新手。我曾经认为使用exit()是终止进程的最干净方法(因为它能够删除临时文件,关闭打开的文件,正常终止进程...),但是当我man exit在终端上尝试命令时(Ubuntu 16.04.5,gcc 5.4) .0)我看到以下行:
exit()函数使用不受保护的全局变量,因此它不是线程安全的。
之后,我尝试进行一些有关更好地替代的研究exit()(从一开始就改变我的编程行为)。虽然这样做,我面对这个问题,其中的副作用exit()被提及,并建议使用atexit()适当地(部分至少)解决该问题。
在某些情况下,使用abort()优先于exit()。最重要的是,这个问题表明这atexit()可能也是有害的。
所以这是我的问题:
exit()并且在任何情况下都不会损害系统)?