के साथ साइन एक्सटेंशन हमें कुछ अजीब मूल्यों का उत्पादन हुआ, एक छोटा परीक्षण मामला नीचे है। यह प्रिंट करता है "एफएफएफएफएफएफएफएफएफ 9ए 64 सी 2 ए"। ऐसा लगता है कि हस्ताक्षर किए गए लंबे समय तक लंबे समय तक साइन किया गया है। लेकिन क्यों? नीचे दिए गए सभी प्रकार हस्ताक्षरित हैं, तो साइन एक्सटेंशन क्या कर रहा है? अपेक्षित आउटपुट "F9A64C2A" होगा।हस्ताक्षरित लंबे लंबे
#include <stdio.h>
int main(int argc,char *argv[])
{
unsigned char a[] = {42,76,166,249};
unsigned long long ts;
ts = a[0] | a[1] << 8U | a[2] << 16U | a[3] << 24U;
printf("%llX\n",ts);
return 0;
}
मामूली सुधार: 'एक [1] 'प्रकार' हस्ताक्षरित char' है। –
@ user964970: फिर से पढ़ें। 'X << y' के प्रकार के पास 'y' के प्रकार से कोई लेना देना नहीं है। –
@ डायट्रिच एपीपी: धन्यवाद। –