一段异常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倒着输出么。跪求解答啊,后面涉及位运算的,大神随意,那个不是很想知道。谢谢(如果有人的话,应该有吧)
添加回答
举报
0/150
提交
取消