PDA

View Full Version : چند سوال ابتدایی c



aras71
یک شنبه 31 اردیبهشت 1391, 01:44 صبح
سلام
من امتحان سی دارم چیزی هم بلد نیستم .چند تا سوال داشتم.ممنون می شم اگه جواب بدید
#include <stdio.h>
/* copy input to output; 1st version */
main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
تو خط 7 eof و ! چیه؟
چرا تو 2 خط آخر یک بار کارکتر گرفته یک بار داده؟
ممنون

vasilopita
یک شنبه 31 اردیبهشت 1391, 01:53 صبح
eof معادل end of file هستش که همون تهی یا 0\ هستتش. خوب اگه دقت کنی می بینی که قبل از حلقه ی while یک بار کاراکتر رو گرفته بعد وارد حلقه شده و کاراکتر رو چک کرده. اگه کاراکتر تهی نبود چاپش می کنه و دوباره کارکتر می گیره و ابن کارو اینقدر ادامه می ده تا کاراکتر تهی بگیره.

aras71
یک شنبه 31 اردیبهشت 1391, 03:01 صبح
خیلی ممنون
من کاربرد =! رو هم نفهمیدم.تو متن پایین که میگه اولویت ! بیشتره منظورش چیه؟
The parentheses around the assignment, within the condition are necessary. The precedence
of != is higher than that of =, which means that in the absence of parentheses the relational
test != would be done before the assignment =. So the statement
c = getchar() != EOF
is equivalent to
c = (getchar() != EOF)

developing
یک شنبه 31 اردیبهشت 1391, 13:04 عصر
با سلام

! و =! با هم تفاوت دارند و هرکدوم یک عملگر به حساب میان.
عملگر ! یک عملگر تک عملوندی هست و مقدار یک عبارت رو معکوس می کنه یعنی اگه True باشه به False تبدیل می کنه و بالعکس مثلا
bool a = true;
که در اینجا a! مقدارش میشه false
ولی عملگر =! یک عملگر دو عملوندی هست و نامساوی بودن رو چک می کنه. مثلا:

int a=10, b =20, c = 10;
if (a != b)
cout << "True";
if (a != c)
cout << "false";


در این مثال if اول اجرا می شه ولی if دوم اجرا نمیشه.