اولین بار است که به این وب‌سایت می‌آیید. راهنما را مطالعه کنید!
x
موسسه خیریه محک

شهر ریاضی بازی-ریاضی

این عبارت پیچیده چطور علامت متغیر رو برمی‌گردونه؟

0 امتیاز
504 نمایش

این عبارت علامت متغیر v رو برمی‌گردونه. کسی می‌تونه این رو توضیح بده؟

-(int)((unsigned int)((int)v) >> (sizeof(int) * CHAR_BIT - 1));
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده یکشنبه ۲۵ فروردین ۱۳۹۲ در C++ توسط prodo  

علامت مقدار متغیر رو نه علامت نوع داده‌ی مربوط به متغیر رو!

برنامه‌ی زیر نشون می‌ده که این کد اشتباهه

#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;
}