• 0

لا يمكنني طباعة قيمة متغيرين معًا في لغة ++C؟

أحاول القيام ببرنامج بسيط، وفي جزء من هذا البرنامج أريد أن أقوم بزيادة قيمة المتغير x والمتغير y ثم طباعتهما:

 

int x{ 1 };
int y{ 2 };
std::cout << (++x, ++y);	// 3

لكن المشكلة أني أجد أن القيمة 3 تمت طباعتها فقط بدون طباعة القيمة 2، عندما أقوم بهذا الأمر في Python أو JavaScript يتم طباعة كلا المتغيرين، ما سبب هذه المشكلة هنا؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 1

أنت تستعمل المعامل , comma operator هنا وهذا معامل موجود في لغة ++C، وهو المعامل الأقل أهمية في ترتيب التنفيذ (أي له أقل أولوية في عملية التنفيذ)، ويقوم هذا المعامل بتنفيذ الجزء الموجود على اليسار ثم يعيد الجزء الموجود على اليمين، فعلى سبيل المثال في الكود التالي سيتم زيادة قيمة x و سيتم تهيئة المتغير y بالقيمة 3

int x{ 1 };
int y{ (++x, 3) }; // تم إحاطة العملية بأقواس لكي لا يظهر خطأ too many initializer values
std::cout << y;	// 3

يتجنب المبرمجين إستخدام إستخدام هذا المعامل قدر الإمكان، ما عدا في حلقات for حيث يتم إستخدامه لعمل أكثر من عداد في نفس الحلقة، كما في الكود التالي:

#include <iostream>

int main()
{
    for (int x{ 0 }, y{ 9 }; x < 10; ++x, --y)
        std::cout << x << ' ' << y << '\n';

    return 0;
}

وستكون ابنتيجة كالتالي:

0 9
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1
9 0

أما بالنسبة لطباعة المتغير فيمكنك ببساطة إستخدام المعامل >> مرتين أو أكثر، على النحو التالي:

int x{ 1 };
int y{ 2 };
std::cout << ++x << ' ' << ++y << '\n';
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

يمكن استخدام دالة prinf لطباعة مجموعة متغيرات مع تحديد نمطهم

int x = 5;
int y = 10;
printf("%d : %d\n", x, y);

سيعطي الخرج التالي:

5 : 10

لاحظ استخدام d% عند طباعة رقم digit 

  • نستخدم c عند طباعة محارف Characters
  • نستخدم f عند طباعة أرقام فاصلة عائمة Floats
  • نستخدم d عند طباعة أرقام عشرية Decimals
  • نستخدم s عند طباعة سلاسل نصية Strings
specifier	Output	Example
d/i	Signed decimal integer	392
u	Unsigned decimal integer	7235
o	Unsigned octal	610
x	Unsigned hexadecimal integer	7fa
X	Unsigned hexadecimal integer (uppercase)	7FA
f	Decimal floating point, lowercase	392.65
F	Decimal floating point, uppercase	392.65
e	Scientific notation (mantissa/exponent), lowercase	3.9265e+2
E	Scientific notation (mantissa/exponent), uppercase	3.9265E+2
g	Use the shortest representation: %e or %f	392.65
G	Use the shortest representation: %E or %F	392.65
a	Hexadecimal floating point, lowercase	-0xc.90fep-2
A	Hexadecimal floating point, uppercase	-0XC.90FEP-2
c	Character	a
s	String of characters	sample
p	Pointer address	b8000000
n	Nothing printed.
	The corresponding argument must be a pointer to a signed int.
	The number of characters written so far is stored in the pointed location.	
%	A % followed by another % character will write a single % to the stream.	%

 

مثال:

printf("Hello %s \n", "wael");             // Hello wael

printf("Digit: %d \n", 9);                 // Digit: 9

printf("Float %f \n", 2.23);               // Float 2.230000

printf("Float two decimal %.2f", 2.23);    // Float two decimal 2.23

 

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن