【C语言】杂谈

1.函数的链式访问:把一个函数的返回值作为另外一个函数的参数

printf的返回值是打印在屏幕上的字符个数

    //链式访问
    printf("%d",printf("%d",printf("%d",43)));
    //打印的结果是4321

printf("%d",43) -> 打印43,返回2 -> 原式化简为printf("%d",printf("%d",2))

printf("%d",2) -> 打印2,返回1 -> 原式化简为printf("%d",1)

printf("%d",1) -> 打印1

所以最终打印4321

2.局部变量和全局变量

局部变量:{} 内部定义的  不初始化,默认为随机值

全局变量:{} 外部定义的  不初始化,默认为0

当局部变量与全局变量的名字一样时 ==> 局部优先

int a = 1;

void test (void)
{
    //这里的a不是全局变量的a
    int a = 2;
    a=a+1;
}

int main(int argc, const char * argv[])
{
    test();
    printf("%d\n",a);//结果是1
    return 0;
}

解释结果为1:首先进入主函数,调用test函数,test函数内部的变量a的作用域为test函数大括号

内部,所以当调用完test函数后局部变量a也就消失,所以打印的a是全局变量a=1.

3.浅谈内存

局部变量:局部变量是放在栈区上的。

栈区内存的使用习惯:先使用高地址空间,在使用低地址空间。

4.%和/的组合使用

十进制数n:n%10得到个位,n/10去掉个位。

二进制数k:k%2得到二进制末位,k/2去掉二进制末位。

例如:101(5)

5%2=1 --- 得到末尾为1              5/2=2(10) --- 去掉末位1

2%2=0 --- 得到末尾为0             2/2=1(1)   ---去掉末位0

1%2=1 --- 得到末尾为1               1/2=0(0)   ---去掉末位1

这样就将101(5)的每一位都取出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值