====== سوال ۴ ======
تکه کد زیر را در نظر بگیرید:
#include
#include
#include
using namespace std;
int main() {
char c, s[10];
int x, *p;
long long m;
/* code here! */
return 0;
}
قرار است هر کدام از شبهکد های زیر را در قسمت مشخص شده (''/ * code here! * /'') قرار داده و تا جای ممکن به جواب برسیم. بهطور دقیقتر، برای هر یک از کدهایی زیر
* در صورتی که کد کامپایل نمیشود، محل و علّت خطای کامپایل (Compilation Error) را مشخّص کرده و معلوم کنید که چگونه باید این خطا را رفع کرد.
* سپس (بعد از رفع خطای کامپایل در صورت موجود) اگر برنامه در هنگام اجرا دچار خطای زمان اجرا (Runtime Error) میشود، محل و علّت آن خطا را مشخّص کرده و مشخّص کنید که چگونه میتوان از این خطا اجتناب کرد.
* در غیر این صورت اگر برنامه بهدرستی کامپایل میشود اما به هر دلیلی (اعم از پایان نپذیرفتن بهخاطر افتادن در حلقهی نامتناهی، فرمت اشتباه خروجی و غیره خواستهی برنامهنویس را برآورده نمیکند، این مورد را به همراه محل و علّت دقیق و نحوهی رفع مشکل بنویسید.
* سپس (بعد از رفع اشکال اجرایی) اگر برنامه ناکارآمد است (برای مثال، پیچیدگی زمانی آن به سادگی قابل کاهش است)، با ذکر نحوهی بهبود کد به این مهم اشاره کنید.
* نهایتاً مقدار متغیرها در هر خط از اجرای برنامه و خروجی برنامه را نیز تا حد امکان با ذکر دلیل بنویسید.
===== کد شماره یک =====
c = 1000 / float(10) - 35;
cout << c << endl;
===== کد شماره دو =====
x = (1 << 32) - 1;
cout << x << endl;
===== کد شماره سه =====
strcpy(s, "hello0\n");
s[1] = 'A' / 1LL + 0X00;
p = (int *)(s + 1);
if (*p == 'A')
cout << c << endl;
===== کد شماره چهار =====
char c2 = -1; c2++;
if (c2 == 0)
cout << "Yes!" << endl;
===== کد شماره پنج =====
strcpy(s, "welcome");
x = s[strlen(s)];
x++; x++;
p = &x;
if (x & (*p == 2))
cout << "Bah Bah!" << endl;
===== کد شماره شش =====
x = 0;
strcpy(s,"1234567890");
for (c = s[8]; c != 0; c++)
x += c;
cout << x << endl;
for (c = s[8]; c != '0'; c++)
x += c;
cout << x << endl;
===== کد شماره هفت =====
int &q = x;
x = 5;
*p = q;
x++;
x = *(&q);
cout << x << " " << p << " " << &q << endl;
===== کد شماره هشت =====
x = 1;
do {
c = -2;
for ( ; ; x++,c++)
if (x == 10)
break;
else
continue;
} while (c < -1);
cout << "akheysh! " << x << endl;
* [[سوال ۵|سوال بعد]]
* [[سوال ۳|سوال قبل]]