Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.89
Union
17 / 17 / 2
Регистрация: 16.08.2010
Сообщений: 252
#1

uint32_t this decimal constant is unsigned only in ISO C90 - C++

01.05.2011, 21:54. Просмотров 2537. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос uint32_t this decimal constant is unsigned only in ISO C90 (C++):

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

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

Unary minus operator applied to unsigned type, result still unsigned - C++
Подскажите, имеем следующий код: signed int a = -0x80000000; signed int b = -1; signed int c = (a / b);

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

Ошибка Cannot convert from 'ref decimal' to 'ref decimal? - C#
Здравствуйте подскажите пожалуйста почему в строке this.allTuriPoCeneTableAdapter.FillBy(this.turfirmaDataSet.AllTuriPoCene, ref Cena); ...

Модуль часов DS3231, преобразование UNIX TimeStamp uint32_t в uint64_t - Arduino
Доброго времени суток! Имеется модуль часов DS3231, пользуюсь либой отсюда https://github.com/jarzebski/Arduino-DS3231 ...

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

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

Unary minus operator applied to unsigned type, result still unsigned - C++
Подскажите, имеем следующий код: signed int a = -0x80000000; signed int b = -1; signed int c = (a / b);

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

Ошибка Cannot convert from 'ref decimal' to 'ref decimal? - C#
Здравствуйте подскажите пожалуйста почему в строке this.allTuriPoCeneTableAdapter.FillBy(this.turfirmaDataSet.AllTuriPoCene, ref Cena); ...

Модуль часов DS3231, преобразование UNIX TimeStamp uint32_t в uint64_t - Arduino
Доброго времени суток! Имеется модуль часов DS3231, пользуюсь либой отсюда https://github.com/jarzebski/Arduino-DS3231 ...

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

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

Unary minus operator applied to unsigned type, result still unsigned - C++
Подскажите, имеем следующий код: signed int a = -0x80000000; signed int b = -1; signed int c = (a / b);

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

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

Unary minus operator applied to unsigned type, result still unsigned - C++
Подскажите, имеем следующий код: signed int a = -0x80000000; signed int b = -1; signed int c = (a / b);

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

Ошибка Cannot convert from 'ref decimal' to 'ref decimal? - C#
Здравствуйте подскажите пожалуйста почему в строке this.allTuriPoCeneTableAdapter.FillBy(this.turfirmaDataSet.AllTuriPoCene, ref Cena); ...

Модуль часов DS3231, преобразование UNIX TimeStamp uint32_t в uint64_t - Arduino
Доброго времени суток! Имеется модуль часов DS3231, пользуюсь либой отсюда https://github.com/jarzebski/Arduino-DS3231 ...


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

Или воспользуйтесь поиском по форуму:
17
prazuber
110 / 110 / 3
Регистрация: 29.04.2010
Сообщений: 240
01.05.2011, 22:01 #2
А что мешает написать unsigned int?
0
Union
17 / 17 / 2
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 22:06  [ТС] #3
То, что размер unsigned int меняется на разных системах, а размер uint32_t должен быть всегда постоянен - беззнаковый 32 бита
Но что-то у меня не работает
0
ForEveR
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
01.05.2011, 22:14 #4
Union, Ну дык он ведь пишет, что эта константа является unsigned только в С90.
0
prazuber
110 / 110 / 3
Регистрация: 29.04.2010
Сообщений: 240
01.05.2011, 22:15 #5
Здесь можно использовать unsigned long, его размер не меняется.
0
Union
17 / 17 / 2
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 22:30  [ТС] #6
ForEveR что-то не вижу логики. Переменная, которая по своему названию беззнаковая и в С90 была таковой, вдруг перестала быть беззнаковой? Не вижу смысла в этом.
Как мне объявить этот стандарт для неё?
0
ForEveR
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 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
бжни
2450 / 1655 / 84
Регистрация: 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
В астрале
Эксперт С++
7985 / 4744 / 321
Регистрация: 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 / 2
Регистрация: 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
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
01.05.2011, 23:13 #11
ну дак u добавить
0
Union
17 / 17 / 2
Регистрация: 16.08.2010
Сообщений: 252
01.05.2011, 23:16  [ТС] #12
Дак мнеж не ворнинг нужно подавить, а чтобы переменная стала беззнаковая
0
alex_x_x
бжни
2450 / 1655 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
01.05.2011, 23:16 #13
звезда в шоке, а она чтоли стала знаковой?
0
Union
17 / 17 / 2
Регистрация: 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
бжни
2450 / 1655 / 84
Регистрация: 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
01.05.2011, 23:21
Ответ Создать тему
Опции темы

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