Проблем с логически оператор и целочислени променливи.
Здравейте!
Имам следният проблем, който най-вероятно е нещо глупаво, което не знам.
Става въпрос за задача 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. Просто не мога да се примиря, че не работи.
Защото така е устроен Shift оператора.
Много благодаря. Беше полезен :))