C语言中强类型&弱类型

强类型:以初始化的全局数据;

弱类型:未初始化的全局数据;

main.c

#include<stdio.h>

short x = 10;
short y = 10;

void func();

int main()
{
        fun();
        printf("x=%d\n,y=%d\n");
        return 0;
}
test.c
int x ;

void func()
{
        x = 20;
}


上边打印出的结果为x=20,y=0。为什么呢?


一个工程中有多个文件,编译时分开编译。test.c编译时x访问的是当前文件的x,把20写到x的内存上,4字节大小。
main.c中的x为强符号,test.c中的x为弱符号,选强符号。链接时选强符号的x,但是编译时已经定好4字节大小。把20写到x内存上时,小端模式0x14000000,main.c中x、y都为short类型,也就是x是1400 ,y是0000。所以打印出来x=20,y=0。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值