Ифодаҳо дар с++

Ба дигарон равон намоед

Ифода — ин пайдарпаии операндҳо ва аломати амалҳо аст. Тартиби иҷрошавии амалҳо бо операндҳо аз руи ранг (приоритет)-ашон иҷро карда мешаванд (ниг. ҷадвали ран- гҳо дар мавзуи 1.4). Барои тағйир додани тартиби иҷрошаву ё гуруҳбандии як қисми ифода бояд аз қавсҳои доираву () исти- фода кард. Дар ҳолати умуму, амалҳои унари (ранги 2), амали шарти (ранги 14) ва амали бахшиш (ранги 15) аз тарафи рост ба чап иҷро карда мешаванд. Масалан, қимати ифодаи x=y=z маънои x=(y=z) дорад. Ифодаи x+y-z бошад маънои (x+y)-z- ро дорад.

Ба ғайр аз ташкили қоидаи ҳисобкуну, қимати ифода дар ҳо- латҳои хусуси метавонад нодуруст ҳисоб карда шавад. Масалан, қимати ифодаи a=3, a+2 ба 5 баробар буда, қимати тағйирёбандаи а нодуруст ба 3 баробар мешавад. Мисоли дигар: қимати ифодаи x > 0 ? x— : x ба қимати x баробар мешавад, ва дар ҳолати мусбат будани қимати x он 1 вохрд кам карда мешавад.

Табдилдиҳии ошкори навъ. Барои дуруст ҳисоб шудани қимати ифода, зарур (на кифоя) аст, ки навъи операндҳои дар он иштироккунанда якхела бошад. Барои ба ин мақсад расидан, аз табдилдиҳии навъ истифода мебаранд, ки намуди умумиаш чунин аст:

type(onepa^)

Дар ин ҷо, type яке аз навъҳои стандарти аст. Ин тарзи табдил- диҳи танҳо дар он ҳолат истифода бурда мешавад, агар навъи ҳосилшаванда яке аз навъҳои стандарти бошад. Масалан,

int(3.14) ёfloat(2/5)

мисолҳои табдилдиҳии дуруст мебошанд. Мисоли

unsigned long(x/3+2)

нодуруст мебошад.

Барои табдилдиҳии навъ ба навъи аз комбинатсия иборат- буда аз табдилдиҳии каноникии навъ истифода мебаранд. Дар ин ҳолат навъи матлуб бояд ба қавси доирави гирифта шавад. Ҳамин тариқ, барои ислоҳи мисоли болои кифоя аст, ки онро чунин нависем:

(unsigned long)(x/3+2)

Ин тарзи навишт барои навъҳои стандартии низ дуруст аст, яъне навиштҳои int(3.14) ва (int)3.14, ё float(2/5) ва (float)(2/5) баробарқувва мебошанд.

Табдилдиҳии стандартии навъ. Агар ҳангоми ҳисобку- нии қимати ифода табдилдихри ошкори навъҳо иҷро нашуда бошанд, он гоҳ табдилдихр маҷбури (аз тарафи компилятор) иҷро карда мешавад.

Ҳангоми табдилдиҳии навъҳо бояд табдилдиҳии тасвири до- хилии операнд (дар хотира) ва табдилдиҳии интерпретатсияи тасвири онро фарқ кард. Масалан, ҳангоми табдилдиҳии опе- ранди навъаш unsugned int ба навъи int тағйирдиҳии тасвири дохилии он зарур нест — танҳо интерпретатсияи ин тасвир таб- дил дода мешавад. Вале, ҳангоми тағйирдиҳии навъи float ба int тағйирдиҳии танҳо интерпретатсияи он кифоя нест — бояд боз дарозии ячейкаи хотираро низ зиёд кард. Барои ҳамин ҳам, аз табдилдиҳиҳои навъҳо бояд бо эҳтиёт истифода барем.

Табдилоти стандартии навъҳо аз руи қоидаҳои зерин иҷро карда мешаванд:

  1. Ҳамаи ададҳои бутуни кутоҳ ба навъи ҳаҷмаш хурдтарин мувофиқи ҷадвали зерин табдил дода мешавад;
НавъиаввалаТабдил дода мешавад баҚоидаи табдилдиҳи
charintИловакунУ бо сифр ё ё бо аломати адад
unsigned charintРазряди аломати амал бо сифр иваз мешавад
signed charintИловакунии аломат
shortintҚимати аввала нигоҳ дошта мешавад
unsigned shortunsigned intҚимати аввала нигоҳ дошта мешавад
  1. Агар навъи ягон операнд longdoubleбошад, навъи опе- ранди дуюм низ ба longdouble табдил дода мешавад;
  2. Агар банди 2 иҷро нашавад ва яке аз операндҳо навъи double дошта бошад, навъи операнди дуюм ба double таб- дил дода мешавад;
  3. Агар бандҳои 2^3 иҷро нашаванд ва яке аз операндҳо на­въи float дошта бошад, навъи операнди дуюм ба float табдил дода мешавад;
  1. Агар бандҳои 2+4 иҷро нашаванд (яъне, ҳар дуи операндҳо навъи бутун доранд) ва яке аз операндҳо навъи longintдошта бошаду операнди дуюм навъ- и unsignedintдошта бошад, он гоҳ, агар longintқимати unsignedint-ро тасвир карда тавонад, охи- рин ба longint, вагарна ҳар ду операнд ба навъи unsignedlongint табдил дода мешаванд.;
  2. Агар бандҳои 2+5 иҷро нашаванд ва яке аз операндҳо навъи long дошта бошад, навъи операнди дуюм ба longтабдил дода мешавад;
  3. Агар бандҳои 2+6 иҷро нашаванд ва яке аз операндҳо навъи unsignedдошта бошад, навъи операнди дуюм ба unsignedтабдил дода мешавад;
  4. Агар бандҳои 2+7 иҷро нашаванд, он гоҳ ҳар ду операнд навъи int доранд.

Маводҳои ҳамсон