PDA

View Full Version : سوال: خروجی قطعه کد زیر چیه؟ چرا؟



ms.nazeri
سه شنبه 10 خرداد 1390, 22:34 عصر
خروجی قطعه کد زیر چیست؟چرا؟
void func(int a)
{
if(!a) return;
int ch=a&0x1;
func(a>>1);
cout<<ch;
}

shahmohammadi
چهارشنبه 11 خرداد 1390, 20:42 عصر
این هم یه برنامه هست که معادل باینری عدد آ رو چاپ می کنه.
این تابع می آد کم ارزش ترین بیت رو در ch قرار می ده بعد خودشو برای بقیه بیت های آ فراخوانی می کنه بعد chرو چاپ می کنه.
به این نکته هم باید توجه کنیم که آخرین بازگشتی اول از همه چاپ می شه یعنی با ارزش ترین رقم اول چاپ می شه و بقیه به ترتیب پشت سر اون چاپ می شن. همچنین تابع زمانی فراخوانی هاش تموم می شه که عدد آ برابر با 1 شده باشه چون !1 می شه صفر و صفر معادل false هست.