சி (நிரலாக்க மொழி): ++ a மற்றும் a = a + 1 ஆகியவற்றுக்கு இடையிலான வேறுபாடு என்ன?


மறுமொழி 1:

எந்த வித்தியாசமும் இல்லை. ++ a, a + = 1, மற்றும் a = a + 1 ஆகியவை ஒரே மாதிரியான வெளிப்பாடுகள், வரையறையால் (பொருள், மொழி விவரக்குறிப்பு அவற்றை இந்த வழியில் வரையறுக்கிறது).

மூன்று நிகழ்வுகளிலும், வெளிப்பாட்டின் விளைவாக அது "a" என்று எழுதும் மதிப்பின் நகலாகும் (ஒரு ++ என்பது நிச்சயமாக வேறுபட்டது, இதன் விளைவாக அது "a" இலிருந்து படித்த மதிப்பின் நகலாகும்)

ஒரே ஒரு வித்தியாசம் என்னவென்றால், "a" என்பது ஒரு செயல்பாட்டு அழைப்பு போன்ற மிகவும் சிக்கலான வெளிப்பாடாக இருந்தால், அது "a = a + 1" இல் இரண்டு முறை அழைக்கப்படும், மேலும் அந்த ஒதுக்கீட்டின் முன்னுரிமை ++ ஐ விட மிகக் குறைவு, எனவே பயன்படுத்துதல் ++ க்கு பதிலாக ஒதுக்குதல் சில நேரங்களில் கூடுதல் அடைப்புக்குறிப்புகள் தேவைப்படுகிறது: ++ a + ++ b (a + = 1) + (b + = 1) அல்லது (a = a + 1) + (b = b + 1)


மறுமொழி 2:

++ a மற்றும் a + 1 ஆகியவை ஒரே மாதிரியாக இருக்கின்றன, ஆனால் நீங்கள் ஒன்றுக்கு மேற்பட்ட மாறிகளைப் பயன்படுத்தும் போது சிக்கல் ஏற்படுகிறது.

உதாரணமாக:

int a = 10, b;

++ a => மதிப்பை ஒவ்வொன்றாக அதிகரிக்கிறது (o / p: a = 11)

a ++ => மதிப்பை ஒவ்வொன்றாக அதிகரிக்கிறது (o / p: a = 11%)

b = a ++ => முதலில் ஒரு மதிப்பை a க்கு ஒதுக்கி, பின்னர் 0ne ஆல் அதிகரிக்கும் (o / p: a = 11, b = 10)

b = ++ a => முதல் மதிப்பு a ஆல் அதிகரிக்கப்பட்டு பின்னர் b க்கு ஒதுக்கப்படுகிறது (o / p: a = 11, b = 11)


மறுமொழி 3:

++ a மற்றும் a + 1 ஆகியவை ஒரே மாதிரியாக இருக்கின்றன, ஆனால் நீங்கள் ஒன்றுக்கு மேற்பட்ட மாறிகளைப் பயன்படுத்தும் போது சிக்கல் ஏற்படுகிறது.

உதாரணமாக:

int a = 10, b;

++ a => மதிப்பை ஒவ்வொன்றாக அதிகரிக்கிறது (o / p: a = 11)

a ++ => மதிப்பை ஒவ்வொன்றாக அதிகரிக்கிறது (o / p: a = 11%)

b = a ++ => முதலில் ஒரு மதிப்பை a க்கு ஒதுக்கி, பின்னர் 0ne ஆல் அதிகரிக்கும் (o / p: a = 11, b = 10)

b = ++ a => முதல் மதிப்பு a ஆல் அதிகரிக்கப்பட்டு பின்னர் b க்கு ஒதுக்கப்படுகிறது (o / p: a = 11, b = 11)


மறுமொழி 4:

++ a மற்றும் a + 1 ஆகியவை ஒரே மாதிரியாக இருக்கின்றன, ஆனால் நீங்கள் ஒன்றுக்கு மேற்பட்ட மாறிகளைப் பயன்படுத்தும் போது சிக்கல் ஏற்படுகிறது.

உதாரணமாக:

int a = 10, b;

++ a => மதிப்பை ஒவ்வொன்றாக அதிகரிக்கிறது (o / p: a = 11)

a ++ => மதிப்பை ஒவ்வொன்றாக அதிகரிக்கிறது (o / p: a = 11%)

b = a ++ => முதலில் ஒரு மதிப்பை a க்கு ஒதுக்கி, பின்னர் 0ne ஆல் அதிகரிக்கும் (o / p: a = 11, b = 10)

b = ++ a => முதல் மதிப்பு a ஆல் அதிகரிக்கப்பட்டு பின்னர் b க்கு ஒதுக்கப்படுகிறது (o / p: a = 11, b = 11)


மறுமொழி 5:

++ a மற்றும் a + 1 ஆகியவை ஒரே மாதிரியாக இருக்கின்றன, ஆனால் நீங்கள் ஒன்றுக்கு மேற்பட்ட மாறிகளைப் பயன்படுத்தும் போது சிக்கல் ஏற்படுகிறது.

உதாரணமாக:

int a = 10, b;

++ a => மதிப்பை ஒவ்வொன்றாக அதிகரிக்கிறது (o / p: a = 11)

a ++ => மதிப்பை ஒவ்வொன்றாக அதிகரிக்கிறது (o / p: a = 11%)

b = a ++ => முதலில் ஒரு மதிப்பை a க்கு ஒதுக்கி, பின்னர் 0ne ஆல் அதிகரிக்கும் (o / p: a = 11, b = 10)

b = ++ a => முதல் மதிப்பு a ஆல் அதிகரிக்கப்பட்டு பின்னர் b க்கு ஒதுக்கப்படுகிறது (o / p: a = 11, b = 11)