Проблем с логически оператор и целочислени променливи.
Здравейте!
Имам следният проблем, който най-вероятно е нещо глупаво, което не знам.
Става въпрос за задача 16 от домашно No 3, Където видът на променливата, в която се съхранява числото, на което трябва да се разменят битове е от тип "uint". Когато разпиша програмата с тип "int" тя работи и извежда верен отговор, но кагото я разпиша с "uint", ми казва: "Operator "<<" cannot be applied to operands of type "int" and "uint"." ИЛИ:
Това с "int"работи:
int n = 1140867093;
int p = 3;
int mask1 = 1 << p;
Това с "uint" НЕ работи:
uint n = 1140867093;
uint p = 3;
uint mask1 = 1 << p;
В предишната зад. 15, където типът също трябва да е "uint", но номерата на битове, които трябва да се разменят са числа 3,4..., а не променливи, нямам този проблем, т.е. това работи:
uint n = 1140867093;
uint mask1 = 1 << 3;
Моля, за помощ. Благодаря.
Пробвах със следните типове:
int - работи,
uint - не работи, казва "Operator "<<" cannot be applied to operands of type "int" and "uint".
long - не работи, казва "Operator "<<" cannot be applied to operands of type "int" and "long".
Реших, че проблемът е в 1, което по подразбиране е от тип int и сложих суфикс 'l', т.e.
long n = 1140867093;
long p = 3;
long mask1 = 1l << p;
и на това ми казва: "Operator "<<" cannot be applied to operands of type "long" and "long".
Това направо уби всичките ми надежди. Цялата програма с тип int работи, и маски, и цикли,
и извежда верни отговори, но това нещо което изглежда просто не работи.
Като си погледнах кода видях сега, че всичките ми стойности са от тип "long" с изключение на firstPos, secondPos и "k". В твоя случай направи "p" и "mask" да са си от тип "int" и не би трябвало да ти прави повече проблеми. Ако за всеки случай ти дава пак проблем качи си кода в PasteBin и дай линк тук да го видим :)