modir
شنبه 29 مهر 1385, 11:24 صبح
سلام
قبلا از اینکه سوالم ممکنه خیلی ابتدایی باشه عذرخواهی می کنم:خجالت:
ببنید من تازه کار کردن با زبان c رو شروع کردم توی این دوتا مثال با نتیجه عجیبی برخورد کردم:
اولیش اینه:
#include<stdio.h>
#include<conio.h>
main()
{clrscr();
char a=-100;
printf("%d%u" ,a,a);
getch();
}
خروجی این برنامه کوچک با چیزهایی که من خوندم بایدیک عدد منفی 100 باشه و یک عدد156 ولی خروجی عددمنفی 10065436 است در حالیکه کاراکتر من از نوع char و یک بایتی است
سوال دوم من هم این مثال است :
#include<stdio.h>
#include<conio.h>
main()
{clrscr();
int a=2 ,b;
b=a++-a++;
printf("%d%5d",a++-a++,b);
getch();
}
در این مثال هم باید خروجی ها برابر باشد ولی در کمال تعجب برای خروجی اول عدد منفی 1 و برای خروجی دوم عدد 0 را نشان میدهد
می خواستم ببینم این رفتار کامپایلر c برای چیست ؟
قبلا از اینکه سوالم ممکنه خیلی ابتدایی باشه عذرخواهی می کنم:خجالت:
ببنید من تازه کار کردن با زبان c رو شروع کردم توی این دوتا مثال با نتیجه عجیبی برخورد کردم:
اولیش اینه:
#include<stdio.h>
#include<conio.h>
main()
{clrscr();
char a=-100;
printf("%d%u" ,a,a);
getch();
}
خروجی این برنامه کوچک با چیزهایی که من خوندم بایدیک عدد منفی 100 باشه و یک عدد156 ولی خروجی عددمنفی 10065436 است در حالیکه کاراکتر من از نوع char و یک بایتی است
سوال دوم من هم این مثال است :
#include<stdio.h>
#include<conio.h>
main()
{clrscr();
int a=2 ,b;
b=a++-a++;
printf("%d%5d",a++-a++,b);
getch();
}
در این مثال هم باید خروجی ها برابر باشد ولی در کمال تعجب برای خروجی اول عدد منفی 1 و برای خروجی دوم عدد 0 را نشان میدهد
می خواستم ببینم این رفتار کامپایلر c برای چیست ؟