Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
#1

uint32_t this decimal constant is unsigned only in ISO C90

01.05.2011, 21:54. Просмотров 2686. Ответов 17
Метки нет (Все метки)

Пишу так:
C++
1
uint32_t i=2147483648;
Компилятор выдает: this decimal constant is unsigned only in ISO C90
И работает как со знаковой переменной.
Как это поправить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2011, 21:54
Ответы с готовыми решениями:

Поменять стандарт ISO C99 на ISO C90
На домашнем компьютере (mac) компилирую программы в терминале через gcc,...

Предупреждение - ISO C++ forbids converting a string constant to 'char*'
Пишу в секции private класса статический член, компилируется нормально, но...

Не работает запрос с одинаковыми типами данных c# decimal, SQL Server Decimal(18,2)
Здравствуйте, не понимаю почему не проходит запрос на бд, с одинаковыми типами...

Expected constant expression; cannot allocate an array of constant size 0
Доброго утра. Народ помогите, вот программа оформлена в виде функции #include...

Unary minus operator applied to unsigned type, result still unsigned
Подскажите, имеем следующий код: signed int a = -0x80000000; signed int...

17
prazuber
110 / 110 / 13
Регистрация: 29.04.2010
Сообщений: 240
01.05.2011, 22:01 #2
А что мешает написать unsigned int?
0
Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 22:06  [ТС] #3
То, что размер unsigned int меняется на разных системах, а размер uint32_t должен быть всегда постоянен - беззнаковый 32 бита
Но что-то у меня не работает
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 22:14 #4
Union, Ну дык он ведь пишет, что эта константа является unsigned только в С90.
0
prazuber
110 / 110 / 13
Регистрация: 29.04.2010
Сообщений: 240
01.05.2011, 22:15 #5
Здесь можно использовать unsigned long, его размер не меняется.
0
Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 22:30  [ТС] #6
ForEveR что-то не вижу логики. Переменная, которая по своему названию беззнаковая и в С90 была таковой, вдруг перестала быть беззнаковой? Не вижу смысла в этом.
Как мне объявить этот стандарт для неё?
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 22:51 #7
Union, Так.
Цитата Сообщение от Union Посмотреть сообщение
а размер uint32_t должен быть всегда постоянен
А ссылочку на пруф можно? ЗЫ в каком он хедере-то хоть? Я у себя найти никак не могу.

Добавлено через 12 минут
Так о чем это я. В MSVS такого типа нету. Обязан он быть в любом компиле только со стандарта С99. Так что пока каждый С++ компиль не будет поддерживать С99 - это непереносимо, насколько я понимаю.
2010 поддерживает. Переносимо видать)
0
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
01.05.2011, 23:02 #8
uint32_t i=2147483648u;
??

что за компилятор?

Добавлено через 1 минуту
C
1
2
3
4
5
6
#include <stdint.h>
 
int main()
{
   uint32_t i=2147483648u;
}
Добавлено через 1 минуту
для не с99 в каком-нибудь #inсlude <linux/..> #include "os_spec.h" будут нужные typedef'ы
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 23:02 #9
А 10-ка и без u воспринимаеть.

C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <cstdint>
 
int main()
{
    uint32_t param = 2147483648;
    std::cout << sizeof(param) << ' ' << param << '\n';
    param = -1;
    std::cout << param << '\n';
}
0
Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 23:13  [ТС] #10
У меня g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5 QT 2.0.1
ForEveR, ваш пример выдает тоже самое
0
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
01.05.2011, 23:13 #11
ну дак u добавить
0
Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 23:16  [ТС] #12
Дак мнеж не ворнинг нужно подавить, а чтобы переменная стала беззнаковая
0
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
01.05.2011, 23:16 #13
звезда в шоке, а она чтоли стала знаковой?
0
Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 23:18  [ТС] #14
Блин, дак она и была знаковая, хотя не должна быть Вот я и спрашиваю, почему вообще так, ведь не должно быть, даже название расшифровывается uint32_t = unsigned integer 32 bit

C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <cstdint>
 
int main()
{
        uint32_t param = 2157483648u;
        printf("%i\n", param);
}
Выдает: -2137483648
0
alex_x_x
бжни
2455 / 1661 / 134
Регистрация: 14.05.2009
Сообщений: 7,162
01.05.2011, 23:21 #15
Bash
1
2
%d or %i    Signed decimal integer
%u             Unsigned decimal integer
1
Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 23:22  [ТС] #16
Дак это же вывод. А мне нужно нужно над переменной производить разные математические операции. Чтобы она физически была беззнаковой, как unsigned long
0
ForEveR
В астрале
Эксперт С++
7995 / 4754 / 651
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 23:23 #17
Union, Блин. Она беззнаковая. Попробуй ей присвоить -1 и выведи через
C
1
printf("%u\n", var_name);
2
Union
17 / 17 / 0
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 23:30  [ТС] #18
Спасибо, действительно...придётся все printf переписывать
0
01.05.2011, 23:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2011, 23:30

Написать функции для преобразования IP адреса из dot-decimal нотации в int и из int в dot-decimal нотацию
IP-адрес - это четверка a.b.c.d, где a, b, c, d целые числа из интервала ....

SysTick_GetPeriod(uint32_t frequency)
Как правильно? uint32_t SysTick_GetPeriod(uint32_t frequency) { return...

C + IAR + uint32_t to char
Не уверен что в нужную тему вопрос, по истине детский. #ymstude &lt;stdint.h&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru