一段异常ew的代码,
#include<stdio.h>
#include<string.h>
int main( void )
{
char* s="1101";//13
char* p=s+strlen(s);
unsigned i=0;
unsigned num=0;
while (p-->s)
num^=!(*p^'1')<<i++;
printf("----");
printf("%u\n",num);
return 0;
}
这个是把二进制转换为10进制 的代码。。。。。。。。。。。。。至于为什么写成这个样子,不是我写滴。。。为了考我这样不会指针的人类吧。
首先 char* p=s+strlen(s);为什么p指针的内容和s指针的内容就一样了,(指针学得很不好求解答下)但是用编译器输出p,得到的是null,可以理解为这个时候的p指向的是字符串结束标志'\0'么,
然后while (p-->s)其实是while((p--)>s)【这样分开稍微好理解一点,】这里,p--怎么理解呢,这个字符串p倒着输出么。跪求解答啊,后面涉及位运算的,大神随意,那个不是很想知道。
谢谢(如果有人的话,应该有吧)
冯宝宝
相关分类