一段異常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
提交
取消