पहले: dest_pid
pf
के बाद संरचना से हिस्सा है और मुझे लगता है कि यह एक और चर तो uint16_t dest_pid;
दूसरा है: p
uint8_t
के लिए सूचक है, आप 8 से शिफ्ट जब आप (p[1] << 8)
करना क्या सूचक के अंदर है के लिए, उदाहरण के लिए p[1] = 0xE5
स्थानांतरण के बाद यह 0xE500
होगा। याद रखें कि आपने अपना परिणाम dest_pid
में रखा है जो 2 बाइट्स वैरिएबल है।
अंतिम पंक्ति का अनुवाद सबसे pid
की कम बाइट (कम महत्वपूर्ण) लेने के लिए और pid
के उच्च बाइट (8 से स्थानांतरित कर दिया) में जोड़ना और pf->dest_pid
में रख जाने की संभावना है, तो आप सोच सकते हैं कि क्यों वह नहीं था शुरुआत से 2 बाइट्स नहीं भेजते हैं, और इसका कारण हो सकता है क्योंकि वह इसे बस से प्राप्त कर रहा है जो समय (चक्र) प्रति इकाई केवल एक बाइट भेजता है।
अपरिपक्व संकेतक को संदर्भित करना ?? निश्चित नहीं है कि विचार क्या है लेकिन यह निश्चित रूप से एक अच्छा विचार नहीं है। जब तक आप कुछ कोड याद नहीं कर रहे हैं? – mathematician1975
'(पी [1] << 8) 'अभिव्यक्ति का हिस्सा है)। इसमें एक प्रकार (हस्ताक्षरित) है, जो * पी [1] के प्रकार से * व्युत्पन्न * है: यह केवल हस्ताक्षर किए गए गुणवत्ता को "विरासत" देता है, आकार नहीं। – joop
यहां देखें: http://stackoverflow.com/questions/12131568/bit-shifting-a-byte-by-more-than-8-bit – Downvoter