Loading...
yuletodim avatar yuletodim 37 Точки

Проблем с логически оператор и целочислени променливи.

Здравейте!

Имам следният проблем, който най-вероятно е нещо глупаво, което не знам.

Става въпрос за задача 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;

Моля, за помощ. Благодаря.

Тагове:
1
Programming Basics
Masovski avatar Masovski 211 Точки
Оператор << не работи с uint за броя на позициите. Пример:

int operator <<  -> (int x, int position);
uint operator << -> (uint x, int position);
long operator << -> (long x, int position);
ulong operator << -> (ulong x, int position);

Броя на позициите трябва винаги да е int. Можеш да направиш следното:

uint n 1140867093;

int p = 3;

uint mask = (uint)1 << p; <-- така маската ще е от тип uint и няма да ти дава грешки.

 

1
yuletodim avatar yuletodim 37 Точки

Това е което в крайна сметка направих смених типа, изрично, когато декларирах променливите.

После обаче имах същия проблем в циклите, защото сменях типа на целия израз, а не само на единицата,

защото не се сетих. Много благодаря.

И все пак, защо броя на позоциите трябва да е int. Просто не мога да се примиря, че не работи.

0
yuletodim avatar yuletodim 37 Точки

Много благодаря. Беше полезен :))

 

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.