-
چند سوال از c++
چند تا سؤال كوچك در مورد c++ داشتم؟
1.كاركترهاي تبديلي n و a را در printf و scanf با مثال توضيح دهيد همچنين فرق i و d را هم بگيد.
2.يك توضيحي در مورد نحوه عملكرد دستور زير ميخواهم،براي چي تو هر جا يك مقدار متفاوت ميدهد.
توي turbo c++ 4.5
int a = 10;
printf("%d%d%d%d",++a,a,a++,a); \\ output:12111010
توي vc++ 6:
int a = 10;
printf("%d%d%d%d",++a,a,a++,a); \\ output:11101010
توي vc++ 2008:
int a = 10;
printf("%d%d%d%d",++a,a,a++,a); \\ output:12121012
توي php:
$a = 10;
printf("%d%d%d%d",++$a,$a,$a++,$a); \\ output:11111112
3.اگه بخواهم يك تابع را به نوعي گرانبار كنم كه هر آرگومان آن بتواند نوع مختلفي باشد چه بايد كرد مثلاً در كد زير:
template <class t>
t function(t val1, t val2)
{
return val1+val2;
}
آرگومان هاي ورودي به طور مثال يا هر دو بايد char باشيد يا هر دو int.حال اگه بخواهم يك int و يك char باشيد بايد چكار كنم.
4.فرق تبديل يك نوع داده به صورت static_cast با روش c در c++ چيه؟
5.در صورتي كه پيش پردازنده اي را include كنيم ولي از توابع آن استفاده نكنيم،روي رم تاثير ميگذارد.
-
لطف كنيد سريع تر جواب سؤال هام رو بديد.
-
جواب هيچ كدام از سؤال ها رو كسي نميدونست؟
-
1 - n تعداد کاراکتر هایی که printf یا fprintf چاک کرده رو تو یه متغییر از نوع signed int میریزه (البته چاپش نمیکنه)
a هم یه آرگومان از نوع double میگره خروجی رو 0xh.hhhh p±d میده
این مثالارو ببین:
کد:
float f = 12.908;
printf("%a", f);
کد:
char c = 'a';
int a = 1234;
int n;
printf("%c %d %n\n", c, a, &n);
printf("%d\n", n)
i و d هم فرقی با هم ندارن
2 - نمیدونم ولی اولی بنظرم درست تر میاد
3 - فالبو اینجوری تعریف کن بعد یکی از آرگومانارو t1 و یکی رو هم t2 بزار
کد:
template <class t1, class t2>
5 - تنها تاثیرش ممکنه موقع کامپایل باشه وگرنه روی RAM تاثیر نداره(البته سوالت کمی گنگه)
-
hoax3r عزيز از جوابتون ممنون.
اگه ميشه يك توضيحي در مورد 0xh.hhhh p±d بديد كه چي هست و به چه دردي ميخوره و به چه عواملي بستگي دارد.
-
یه جور نمایش عدد هست در این حالت عدد اعشاری (double) رو در مبنای 16 نشان میده یک رقم رو قبل از نقطه و مابقی رو بعد از نقطه قرار میده
توان رو هم بعد از حرف p میزاره، یک 0x هم اول عبارت هست که نشون میده عدد در مبنای 16 است
حالا کاربردش کجاست رو نمیدونم چون تا حالا باهاش کار نکرده بودم.
این توضیحات کامل تر هم بد نیست ببینید:
کد:
A double argument representing a floating-point number is converted in the style [-]
0xh.hhhh p±d, where there is one hexadecimal digit (which is nonzero if the argument is a
normalized floating-point number and is otherwise unspecified) before the decimal-point
character) and the number of hexadecimal digits after it is equal to the precision;
if the precision is missing and FLT_RADIX is a power of 2, then the precision is sufficient
for an exact representation of the value; if the precision is missing and FLT_RADIX
is not a power of 2, then the precision is sufficient to distinguish values of type double,
except that trailing zeros may be omitted; if the precision is zero and the # flag is
not specified, no decimalpoint character appears. The letters abcdef are used for a
conversion and the letters ABCDEF for A conversion. The A conversion specifier produces
a number with X and P instead of x and p. The exponent always contains at least one digit,
and only as many more digits as necessary to represent the decimal exponent of 2.
If the value is zero, the exponent is zero.
A double argument representing an infinity or NaN is converted in the style
of an f or F conversion specifier.
-
در مورد كاركتر تبديلي %w هم اگه اطلاعي داريد،لطفاً اينجا بگيد.
-
w% ؟؟ همچین فرمت تبدیلی تا جایی میدونم نداریم منظورم برای دستوراتی مثل printf , fprintf , .... هست،
مگه اینگه بگین منظورتون دقیقا برای چه تابعی هست، شاید برای بعضی توابع خاص باشه که من اطلاع ندارم.
-
ممنون من خودم فهميدم.اين كاكتر براي پرينت كردن هست.
-
ye bar toye forum rajebe operator ++ bahs shod taghriban be javab resid