adas 发表于 2016-12-20 22:45:02

linux下学c的尴尬...

不知道大家有在linux下c的吗?本人就是一枚,又是边看小甲鱼老师的c语言入门视频,又在linux下写小甲鱼老师视频上写的c程序,可是问题来了,一直报错,都快崩溃了。
求解!

#include <stdio.h>

void main ()
{
   printf("%d \n",sizeof(int));
}

这是小甲鱼老师视频里的一个C程序

这是Linux下的报错   

muzi@muzi-TongFang-G41T-CM3:~/桌面/学习笔记/学习C语言入门到精通/学C第一天$ gcc试列程序4.c
试列程序4.c: In function ‘main’:
试列程序4.c:5:15: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [-Wformat=]
      printf("%d \n",sizeof(int));

adas 发表于 2016-12-20 22:45:59

在线求解!

四十二 发表于 2016-12-21 00:13:53

错误说的很明白的了啊

printf里的前一个元素中d%是int型,你后面的那个元素是长无符号整形,前后不匹配啊。

编译器还专门把那一行打印出来了……

adas 发表于 2016-12-21 00:17:47

可是小甲鱼这样写确实编译运行成功了   就是纠结这里...

Main(_) 发表于 2016-12-21 00:24:30

你linux装的是什么版本啊

人造人 发表于 2016-12-21 08:53:42

这不是错误,是警告
程序应该是可以运行的

adas 发表于 2016-12-21 11:18:54

乌班图 16.10   Linux下C没提示就是成功有任何提示应该都是报错吧   是不是Windows下写C和Linux下写C有区别

adas 发表于 2016-12-21 11:27:19

自己也还看了一本C语言入门一个老外的写的里面的程序在Linux下运行也没报错个人对比了下 是不是不规范的原因?
#include<stdio.h>
intmain(void)
{
   
return0;
}
那本书是这样写的中间就省略了自己看了小甲鱼的3集C语言视频 除了 hello word 那个运行了其他的几乎不是这里有点问题就是那里有点问题   

zealstar 发表于 2016-12-21 21:45:24

adas 发表于 2016-12-21 11:27
自己也还看了一本C语言入门一个老外的写的里面的程序在Linux下运行也没报错个人对比了下 是不是不规 ...

不同硬件对相同代码编译出的结果可能不同:
你逐个排除一下:
1、数据类型所占空间不同      
   不做说明了,有的高端点的机器,可能INT占8字节

2、数据类型表达不同            
   例子:unsigned int是无符号数,那么int到底有没有符号?答:根据所在环境不同而不同

3、对运算符优先级的处理不同
   例子:
i = 2;
p = ++i + ++i + ++i;
本人亲测,intel的CPU编译后运行结果是 p=15
而AMD的CPU编译后运行结果是 p = 13

好吧,目前就发现这么多,所以自己根据GCC编译问题的提示来看吧……{:10_266:}

adas 发表于 2016-12-21 21:53:12

zealstar 发表于 2016-12-21 21:45
不同硬件对相同代码编译出的结果可能不同:
你逐个排除一下:
1、数据类型所占空间不同      


谢啦
页: [1]
查看完整版本: linux下学c的尴尬...