C语言基础 | 面试题

[1] ++i 和 i++的区别
区别:

++i先加1再取值
i++先取值再加1

for循环为么效果一样

for(【语句1;【语句2;【语句3)
{
	【执行语句】
}

for 循环是在【执行语句】结束后,才执行【语句3】因此++i和i++的效果相同

for循环中++i和i++的u区别

当需要处理大量的数据时,++i更优。
i++由于是在使用当前值之后再+1,所以需要一个临时的变量来转存。
而++i则是在直接+1,省去了对内存的操作的环节,相对而言能够提高性能
for循环中++i和i++的区别

[2] &运算

#include <stdio.h> 

int And( int v ) {
	int count = 0;
	int x = v;
	
	while( x ) {
		count++;
		x = x & ( x - 1 );
	}
	return count;
}
int main( void ) {
	printf( "%d\n", And( 15 ) );
	return 0;
}
/*
因为9999是奇数,转换成二进制数后,最后一位肯定是1,所以9998除了最后一位是0以外,
其他位数都和9999的相同,这样除了最后一位,其他位数只可能有两种运算:
1&1=1和0&0=0,而最后一位进行的运算是1&0=0,这样,
得到的结果就与9998的二进制数是一样的了,换言之 9999&9998=9998
可以先将9999化为十六进制,然后再化为二进制,有多少个一就要按位与多少次 
可以自己推算看下 
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值