1
我發現memcmp.c仿生是這樣的:爲什麼memcmp在仿生中是這樣的?
30 int memcmp(const void *s1, const void *s2, size_t n)
31 {
32 const unsigned char* p1 = s1;
33 const unsigned char* end1 = p1 + n;
34 const unsigned char* p2 = s2;
35 int d = 0;
36
37 for (;;) {
38 if (d || p1 >= end1) break;
39 d = (int)*p1++ - (int)*p2++;
40
41 if (d || p1 >= end1) break;
42 d = (int)*p1++ - (int)*p2++;
43
44 if (d || p1 >= end1) break;
45 d = (int)*p1++ - (int)*p2++;
46
47 if (d || p1 >= end1) break;
48 d = (int)*p1++ - (int)*p2++;
49 }
50 return d;
51 }
在for循環中,同樣的邏輯重複4次,爲什麼呢?它可以不重複嗎?
THX, 維克多
太棒了!謝謝你的迴應,你給我一個大手,謝謝! –