این عبارت علامت متغیر v رو برمیگردونه. کسی میتونه این رو توضیح بده؟
v
-(int)((unsigned int)((int)v) >> (sizeof(int) * CHAR_BIT - 1));
علامت مقدار متغیر رو نه علامت نوع دادهی مربوط به متغیر رو!
برنامهی زیر نشون میده که این کد اشتباهه
#include <iostream> #include <conio.h> #include <climits> using namespace std; int main() { unsigned int v = numeric_limits<unsigned int>::max(); cout<<v<<endl; cout<<(int)v<<endl; cout<<(unsigned int)((int)v)<<endl; cout<<((unsigned int)((int)v) >> (sizeof(int) * CHAR_BIT - 1))<<endl; cout<<-(int)((unsigned int)((int)v) >> (sizeof(int) * CHAR_BIT - 1)); _getch(); return 0; }