C இல் அசோசியேட்டிவிட்டி மற்றும் ஆபரேட்டர் முன்னுரிமையைப் பற்றி அறிந்து கொள்வதில் உங்களுக்கு உதவ இந்தக் கட்டுரை ஒரு விரிவான டுடோரியலை வழங்குகிறது.
C இல் ஆபரேட்டர் முன்னுரிமை
ஆபரேட்டர் முன்னுரிமை வெளிப்பாடுகளை மதிப்பிடும் போது பல ஆபரேட்டர்கள் மதிப்பிடப்படும் வரிசையை விவரிக்கிறது. உதாரணமாக, ஒரு வெளிப்பாடு கூட்டல் மற்றும் பெருக்கல் ஆபரேட்டர்கள் இரண்டையும் கொண்டிருந்தால், எதை முதலில் மதிப்பிட வேண்டும்? பதில் எளிமையானது, பொதுவாக அறியப்படும் இத்தகைய தெளிவின்மையைத் தீர்க்க C சில விதிகளைப் பின்பற்றுகிறது ஆபரேட்டர் முன்னுரிமை . C இல், ஆபரேட்டர் முன்னுரிமை 17 நிலைகளாக வகைப்படுத்தப்பட்டுள்ளது, அன்ரி ஆபரேட்டர்கள் முதல் மும்மை நிபந்தனை ஆபரேட்டர் வரை. எண்கணித ஆபரேட்டர்கள், ரிலேஷனல் ஆபரேட்டர்கள், லாஜிக்கல் ஆபரேட்டர்கள் மற்றும் பிட்வைஸ் ஆபரேட்டர்கள் போன்ற பெரும்பாலான ஆபரேட்டர்கள் சி தரநிலையைப் பின்பற்றுகிறார்கள். ஆபரேட்டர் முன்னுரிமை நெறிமுறை.
முன்னுரிமை வெளிப்பாடுகளை மதிப்பிடும்போது எந்த ஆபரேட்டர்களுக்கு மற்றவர்களை விட அதிக முன்னுரிமை உள்ளது என்பதை விதிகள் ஆணையிடுகின்றன. சி நிரலாக்க மொழியில் பல வகையான ஆபரேட்டர்கள் வெவ்வேறு அளவுகளைக் கொண்டுள்ளனர் முன்னுரிமை . உதாரணமாக, பைனரி ஆபரேட்டர்களை விட யூனரி ஆபரேட்டர்களுக்கு அதிக முன்னுரிமை உள்ளது. பின்வரும் ஆபரேட்டர்களின் பட்டியல் ஏறுவரிசையில் வரிசைப்படுத்தப்பட்டுள்ளது முன்னுரிமை :
ஆபரேட்டர் | ஆபரேட்டர் என்பதன் அர்த்தம் | அசோசியேட்டிவிட்டி |
() [] -> . |
செயல்பாட்டு அழைப்பு வரிசை உறுப்பு குறிப்பு மறைமுக உறுப்பினர் தேர்வு நேரடி உறுப்பினர் தேர்வு |
இடமிருந்து வலம் |
! ~ + – ++ — & * அளவு (வகை) |
தர்க்கரீதியான மறுப்பு பிட்வைஸ் (1கள்) நிரப்பு யூனரி பிளஸ் யூனரி மைனஸ் அதிகரிப்பு குறைப்பு மரியாதை (முகவரி) சுட்டி குறிப்பு ஒரு பொருளின் அளவைத் தருகிறது தட்டச்சு (மாற்றம்) |
வலமிருந்து இடமாக |
* / % |
பெருக்கவும் பிரி மீதி |
இடமிருந்து வலம் |
+ – |
பைனரி பிளஸ் (கூடுதல்) பைனரி கழித்தல்(கழித்தல்) |
இடமிருந்து வலம் |
<< >> |
இடப்பெயர்ச்சி சரியான மாற்றம் |
இடமிருந்து வலம் |
< <= > >= |
விட குறைவாக குறைவாக அல்லது சமமாக விட பெரியது விட பெரியது அல்லது சமமானது |
இடமிருந்து வலம் |
== != |
சமமாக சமமாக இல்லை |
இடமிருந்து வலம் |
& | பிட்வைஸ் மற்றும் | இடமிருந்து வலம் |
^ | பிட்வைஸ் பிரத்தியேக OR | இடமிருந்து வலம் |
| | பிட்வைஸ் அல்லது | இடமிருந்து வலம் |
&& | தருக்க மற்றும் | இடமிருந்து வலம் |
|| | தருக்க OR | இடமிருந்து வலம் |
?: | நிபந்தனை ஆபரேட்டர் | வலமிருந்து இடமாக |
= *= /= %= += -= &= ^= |= <<= >>= |
எளிய பணி தயாரிப்பு ஒதுக்கவும் பங்கீட்டை ஒதுக்குங்கள் மீதியை ஒதுக்குங்கள் தொகையை ஒதுக்கவும் வித்தியாசத்தை ஒதுக்குங்கள் பிட்வைஸ் மற்றும் ஒதுக்கவும் பிட்வைஸ் XOR ஐ ஒதுக்கவும் பிட்வைஸ் அல்லது ஒதுக்குங்கள் இடது ஷிப்ட் ஒதுக்கவும் வலது ஷிப்ட் ஒதுக்கவும் |
வலமிருந்து இடமாக |
, | வெளிப்பாடுகளை பிரிப்பவர் | இடமிருந்து வலம் |
இந்த விதிகள் கம்பைலருக்கு ஒரே எக்ஸ்பிரஷனில் பல ஆபரேட்டர்களுடன் வெளிப்பாடுகளை எவ்வாறு மதிப்பிடுவது என்று வழிகாட்டுகிறது. உதாரணமாக, பெருக்கல் ஆபரேட்டர், A + B * C சமன்பாட்டில் உள்ள கூட்டல் ஆபரேட்டரை விட அதிக முன்னுரிமையைக் கொண்டுள்ளது. முன்னுரிமை விதிகள். எனவே, தொகுப்பாளர் முதலில் B * C என்ற வெளிப்பாட்டை மதிப்பீட்டில் A ஐச் சேர்க்கும் முன் முடிவு செய்வார்.
ஒரு உதாரணத்தைப் பார்ப்போம் ஆபரேட்டர் முன்னுரிமை குறியீடு மூலம்.
#முழு எண்ணாக முக்கிய ( ) {
முழு எண்ணாக அ = 43 , பி = பதினொரு , c = 16 , ஈ = 31 ;
முழு எண்ணாக விளைவாக = ++ அ * பி -- + c / -- ஈ ;
printf ( 'a = %d \n ' , அ ) ;
printf ( 'b = %d \n ' , பி ) ;
printf ( 'c = %d \n ' , c ) ;
printf ( 'd = %d \n ' , ஈ ) ;
printf ( 'முடிவு = %d \n ' , விளைவாக ) ;
திரும்ப 0 ;
}
மேலே உள்ள குறியீட்டில் a, b, c மற்றும் d ஆகிய நான்கு மாறிகள் அறிவிக்கப்பட்டுள்ளன, மேலும் அவற்றின் ஆரம்ப மதிப்புகள் 43, 11, 16 மற்றும் 31 ஆகும். பின்னர், இது ஒரு வெளிப்பாட்டில் உள்ள இந்த மாறிகளுக்கு பல்வேறு எண்கணிதம் மற்றும் அசைன்மென்ட் ஆபரேட்டர்களைப் பயன்படுத்துகிறது. வெளிப்பாடு முன்-அதிகரிப்பு ஆபரேட்டர் ++a ஐப் பயன்படுத்தி a இன் மதிப்பை அதிகரிக்கிறது, பின்-குறைப்பு ஆபரேட்டர் b– மூலம் விளைவைப் பெருக்குகிறது, பின்னர் d இன் முன்-குறைக்கப்பட்ட மதிப்பால் வகுக்கும் c க்கு விளைவை சேர்க்கிறது. (முன் குறைப்பு ஆபரேட்டரைப் பயன்படுத்தி -d). இந்த வெளிப்பாட்டின் மொத்த விளைவை வைத்திருக்க மாறி முடிவு பயன்படுத்தப்படுகிறது.
வெளியீடு
அசோசியேட்டிவிட்டி இன் சி
அசோசியேட்டிவிட்டி அதே முன்னுரிமையுடன் ஒரு வெளிப்பாட்டின் போது ஆபரேட்டர்கள் மதிப்பிடப்படும் வரிசையைக் குறிக்கிறது. இடமிருந்து வலமாகவும், வலமிருந்து இடமாகவும் கூட்டுறவு இரண்டு ஆபரேட்டர்கள் ஒரே மாதிரியாக இருந்தால், C இல் உள்ள இரண்டு வகையான அசோசியேட்டிவிட்டி முன்னுரிமை , அவை இடமிருந்து வலமாக இடமிருந்து வலமாக மதிப்பிடப்படுகின்றன கூட்டுறவு . ஆயினும்கூட, அதே முன்னுரிமை கவனிக்கப்பட்டால், ஆபரேட்டர்கள் வலமிருந்து இடமாக வலமிருந்து இடமாக மதிப்பிடப்படுகின்றனர். கூட்டுறவு .
எடுத்துக்காட்டாக, ++ இன்கிரிமென்ட் ஆபரேட்டருக்கு வலமிருந்து இடமாக உள்ளது கூட்டுறவு , அதாவது அதிகரிப்பு இயக்குபவர் மாறிக்கு பிறகு மதிப்பிடப்படுகிறது. அதேசமயம் தருக்க மற்றும் இயக்குபவர் இடமிருந்து வலமாக உள்ளது கூட்டுறவு , அதாவது ஆபரேட்டர் இடமிருந்து வலமாக மதிப்பிடப்படுகிறது.
#முழு எண்ணாக () {
int a = 6 , b = 3 , c = 2 ;
முழு முடிவு = a * b / c;
printf( 'முடிவு = %d \n ' , விளைவாக);
திரும்ப 0 ;
}
இந்த குறியீட்டில் a, b மற்றும் c ஆகிய மூன்று மாறிகள் அறிவிக்கப்படுகின்றன, மேலும் அவை முறையே 6, 3 மற்றும் 2 க்கு துவக்கப்படுகின்றன. பின்னர், இது ஒரு வெளிப்பாட்டில் உள்ள இந்த மாறிகளுக்கு பெருக்கல் மற்றும் வகுத்தல் செயல்பாடுகளைப் பயன்படுத்துகிறது. பெருக்கல் மற்றும் வகுத்தல் ஆகியவை அவற்றின் அடிப்படையில் C இல் இடமிருந்து வலமாக வரிசைப்படுத்தப்படுகின்றன கூட்டுறவு ஏனெனில் அவை ஒரே முன்னுரிமை அளவைக் கொண்டுள்ளன. வகுத்தல் செயல்பாடு முதலில் வருவதை இது குறிக்கிறது, அதைத் தொடர்ந்து பெருக்கல் செயல்பாடு வெளிப்பாட்டை மதிப்பிடும் போது, a * b / c.
வெளியீடு
முடிவுரை
ஆபரேட்டர் முன்னுரிமை மற்றும் கூட்டுறவு சி நிரலாக்கத்தில் உள்ள முக்கியமான கருத்துக்கள் வெளிப்பாடுகளின் செயல்பாட்டின் வரிசையை தீர்மானிக்க உதவுகின்றன. அதிகபட்சம் கொண்ட ஆபரேட்டர்கள் முன்னுரிமை நிலை முதலில் மதிப்பிடப்படுகிறது மற்றும் கூட்டுறவு ஒரே முன்னுரிமையுடன் பல ஆபரேட்டர்கள் பயன்படுத்தப்படும்போது வரிசையைத் தீர்மானிக்க விதிகள் உதவுகின்றன. புரிதல் ஆபரேட்டர் முன்னுரிமை மற்றும் கூட்டுறவு சிக்கலான நிரல்களை வடிவமைக்கும் போது அவசியமானது, மேலும் இது குறைவான பிழைகளுடன் தூய்மையான மற்றும் திறமையான குறியீட்டை உருவாக்க உதவுகிறது.