Каково максимальное значение кода запроса в студии android? [Дубликат]

Я думаю, что когда вы определяете String, вы определяете объект. Поэтому вам нужно использовать .equals(). Когда вы используете примитивные типы данных, вы используете ==, но с String (и любым объектом) вы должны использовать .equals().

196
задан River 5 December 2017 в 03:57
поделиться

12 ответов

В диапазоне C для __int32 находится от -2147483648 до 2147483647. См. здесь для полных диапазонов.

unsigned short 0 to 65535
signed short –32768 to 32767
unsigned long 0 to 4294967295
signed long –2147483648 to 2147483647

Нет никаких гарантий, что «int» будет 32 бита , если вы хотите использовать переменные определенного размера, особенно при написании кода, который включает в себя манипуляции с битами, вы должны использовать «Стандартные типы целого».

В Java

Данные int type - это 32-разрядное целое число дополнений, подписанное двумя. Он имеет минимальное значение -2,147,483,648 и максимальное значение 2,147,483,647 (включительно).

1
ответ дан Achintya Jha 17 August 2018 в 09:29
поделиться
  • 1
    Значения, которые вы указываете для C, - это минимальные диапазоны. – Oliver Charlesworth 21 February 2013 в 16:53
  • 2
    @OliCharlesworth Range, если от минимального до максимального. – Achintya Jha 21 February 2013 в 16:55
  • 3
    Я имею в виду, что диапазон для каждого типа может быть больше, чем указано выше. – Oliver Charlesworth 21 February 2013 в 16:57
  • 4
    В C нет ничего __int32. Microsoft не имеет строгого соответствия C-компилятору, поэтому кто заботится о том, как работает их компилятор не-C? Единственным релевантным источником является ISO9899, ​​либо 5.2.4.2.1 "Размеры целочисленных типов" или 7.20.2.1 «Пределы целых чисел точной ширины». Ни один из них не совместим с Microsoft goo. – Lundin 21 February 2013 в 18:03
  • 5
    C99 добавляет int32_t, int16_t и т. Д. К стандарту. На 100% не совместимо с дополнениями Microsoft, но они работают аналогичным образом. – kbelder 21 February 2013 в 18:50

Фактически размер битов int, short, long зависит от реализации компилятора.

Например. на моем 64-битном Ubuntu у меня есть short в 32 битах, когда на другой 32-битной версии Ubuntu это бит 16.

4
ответ дан Alex 17 August 2018 в 09:29
поделиться

На самом деле очень просто понять, вы можете даже вычислить его с помощью калькулятора google: у вас есть 32 бита для int, а компьютеры - двоичные, поэтому вы можете иметь 2 значения на бит (пятно). если вы вычислите 2 ^ 32, вы получите 4 294 967 296.

-2
ответ дан Ankit Dixit 17 August 2018 в 09:29
поделиться

Это потому, что в C-integer на 32-битной машине не означает, что для его хранения используются 32 бита, это может быть и 16 бит. Это зависит от машины (зависит от реализации).

6
ответ дан BlueLettuce16 17 August 2018 в 09:29
поделиться
  • 1
    Ну, стоит отметить, что типичное поведение реализации использует «ширину машины», для int. Но limits.h помогает выяснить, что такое истина – junix 21 February 2013 в 16:48
  • 2
    Но на самом деле я не думаю, что компилятор C для 32 когда-либо был создан без int как 32 бит. Стандарт может позволить реализации компилятора int быть придурковатым, но по какой-то причине никто не хочет создавать монологический компилятор C. Тенденция заключается в создании полезных компиляторов C. – Lundin 21 February 2013 в 17:57

Плакат имеет смешанные типы java. в java, его C in является коротким: короткий (16 бит) = -32768 до 32767 int (32 бит) = -2,147,483,648 до 2,147,483,647

http://docs.oracle.com/ JavaSE / учебник / Java / nutsandbolts / datatypes.html

5
ответ дан Brill Pappin 17 August 2018 в 09:29
поделиться

в стандарте C, вы можете использовать INT_MAX как максимальное значение «int», эта константа должна быть определена в «limits.h». Аналогичные константы определены для других типов ( http://www.acm.uiuc.edu/webmonkeys/book/c_guide/2.5.html ), как указано, эти константы зависят от реализации, но имеют минимальное значение в соответствии с минимальными битами для каждого типа, как указано в стандарте.

-2
ответ дан Carlos UA 17 August 2018 в 09:29
поделиться
  • 1
    На самом деле это не затрагивает вопрос ОП. Кроме того, ключевые части ответа действительно не должны быть похоронены на другом сайте. – Brad Koch 27 May 2014 в 15:01

На самом деле очень просто понять, вы можете даже вычислить его с помощью калькулятора google: у вас есть 32 бита для int, а компьютеры - двоичные, поэтому вы можете иметь 2 значения на бит (пятно). если вы вычислите 2 ^ 32, вы получите 4 294 967 296. поэтому, если вы разделите это число на 2, (потому что половина из них - отрицательные целые числа, а другая половина положительна), тогда вы получаете 2 147 483 648. и это число является самым большим int, которое может быть представлено 32 битами, хотя, если вы обратите внимание, вы заметите, что 2,147,483,648 больше, чем 2,147,483,647 на 1, это потому, что одно из чисел представляет 0, которое находится прямо в середине, к сожалению, 2 ^ 32 не является нечетным числом, поэтому у вас нет только одного числа посередине, поэтому у возможных целых чисел есть один меньше шифров, тогда как отрицательные получат полную половину 2,147,483,648.

И это все. Это зависит от машины не от языка.

-2
ответ дан Emos Turi 17 August 2018 в 09:29
поделиться

В C сам язык не определяет представление некоторых типов данных. Он может варьироваться от машины к машине, на встроенных системах int может быть 16 бит в ширину, хотя обычно это 32 бит.

Единственное требование состоит в том, что short int & lt; = int & lt; = long int по размеру. Кроме того, существует рекомендация, что int должна представлять собственную емкость процессора.

Все типы подписаны. Модификатор unsigned позволяет использовать старший бит как часть значения (в противном случае он зарезервирован для знакового бита).

Ниже приведена краткая таблица возможных значений возможных типов данных:

          width                     minimum                         maximum
signed    8 bit                        -128                            +127
signed   16 bit                     -32 768                         +32 767
signed   32 bit              -2 147 483 648                  +2 147 483 647
signed   64 bit  -9 223 372 036 854 775 808      +9 223 372 036 854 775 807
unsigned  8 bit                           0                            +255
unsigned 16 bit                           0                         +65 535
unsigned 32 bit                           0                  +4 294 967 295
unsigned 64 bit                           0     +18 446 744 073 709 551 615

В Java спецификация языка Java определяет представление типов данных.

Порядок: byte 8 бит, short 16 бит, int 32 бит, long 64 бит. Все эти типы подписаны , нет неподписанных версий. Тем не менее, манипуляции с битами обрабатывают числа, поскольку они были неподписанными (то есть правильно обрабатывают все биты).

Тип символьных данных char имеет ширину 16 бит, unsigned и содержит символы, использующие кодировку UTF-16 (однако можно назначить char произвольное беззнаковое 16-битное целое число, которое представляет недопустимый код символа)

          width                     minimum                         maximum

SIGNED
byte:     8 bit                        -128                            +127
short:   16 bit                     -32 768                         +32 767
int:     32 bit              -2 147 483 648                  +2 147 483 647
long:    64 bit  -9 223 372 036 854 775 808      +9 223 372 036 854 775 807

UNSIGNED
char     16 bit                           0                         +65 535
283
ответ дан gaborsch 17 August 2018 в 09:29
поделиться
  • 1
    В стандарте C также указаны минимальные значения для INT_MAX, LONG_MAX и т. Д. – Oliver Charlesworth 21 February 2013 в 16:51
  • 2
    Java 8 теперь также имеет неподписанное целое: docs.oracle.com/javase/8/docs/api/java/lang/Integer.html – Jakub Kotowski 26 June 2014 в 22:56
  • 3
    Спасибо, @jkbkot, приятно это знать. Хотя кажется, что представление все еще подписано, но некоторые неподписанные операции реализованы как функция. Трудно добавить два unsigned int s ... – gaborsch 27 June 2014 в 08:35
  • 4
    @GaborSch В Java int foo = Integer.MAX_VALUE + 1; System.out.println(Integer.toUnsignedLong(foo)); печатает 2147483648 и char - неподписанный тип – howlger 7 October 2017 в 09:38
  • 5
    @howlger Integer.MAX_VALUE + 1 является 0x80000000 в шестнадцатеричном виде из-за переполнения (и равно Integer.MIN_VALUE). Если вы преобразуете его в unsigned (long), бит знака будет обрабатываться как бит значения, поэтому он будет 2147483648. Благодарим вас за примечание char. char без знака, вы правы, но char не используется для расчетов, поэтому я оставил его из списка. – gaborsch 8 October 2017 в 17:59

32-битное целое число от -2,147,483,648 до 2,147,483,647. Однако тот факт, что вы находитесь на 32-битной машине, не означает, что ваш компилятор C использует 32-разрядные целые числа.

18
ответ дан Ivaylo Strandjev 17 August 2018 в 09:29
поделиться
  • 1
    По крайней мере, моя копия г-на Кернигана и г-на Ричиса «Язык программирования C» говорит в A4.2, что int имеет «естественную ширину машины», который я бы интерпретировал как 32 бита при компиляции для 32-битных машин. – junix 21 February 2013 в 16:52
  • 2
    Это зависит от компилятора, а не от машины, которую я считаю. Например, у меня был 16-битный компилятор, установленный на моей 64-битной машине. – Ivaylo Strandjev 21 February 2013 в 16:55
  • 3
    Конечно, ваш 16-битный компилятор для 16-битного x86-кода использовал только 16 бит. Но это не моя точка зрения. Даже 32-разрядный процессор x86, работающий в 16-битном режиме, имеет только собственную емкость только 16 бит. Я хочу сказать, что у целевой платформы есть компилятор. Например. если у вас есть компилятор для вашего 80286, вы все равно будете генерировать 16-битный код и, следовательно, иметь 16-битные целые числа. – junix 21 February 2013 в 17:06
  • 4
    @junix Я считаю, что это именно то, что я указываю в своем ответе. Это не ОС, которая определяет, сколько битов имеют ваши целые числа. Целевая платформа является свойством компилятора, а не операционной системы, на которой она работает, или вашего процессора. – Ivaylo Strandjev 21 February 2013 в 17:08
  • 5
    Как я писал в своем первом комментарии. «Это 32-бит при компиляции для 32-битных машин». OP записывает в своем размещении «целое число (для 32-разрядной машины)» Поэтому из того, что я понимаю, он не имеет в виду его ОС или его машину, он имеет в виду свою целевую платформу – junix 21 February 2013 в 17:13

Определение языка C задает диапазоны minimum для разных типов данных. Для int этот минимальный диапазон составляет от -32767 до 32767, то есть int должен быть не менее 16 бит в ширину. Реализация может обеспечить более широкий тип int с более широким диапазоном. Например, на сервере разработки SLES 10 я работаю, диапазон от -2147483647 до 2137483647.

Есть еще некоторые системы, которые используют 16-битные типы int (All The World Is Not VAX x86), но есть много, которые используют 32-битные int типы, и, возможно, некоторые из них используют 64-разрядные.

Язык C был разработан для работы на разных архитектурах. Java была разработана для работы на виртуальной машине, которая скрывает эти архитектурные отличия.

12
ответ дан John Bode 17 August 2018 в 09:29
поделиться
  • 1
    Для 16-битного int это -3276 8 до 32767. Для 32-битного int это -214748364 8 до 2147483647. Диапазон задается от -2 ^ ( n бит-1) до + 2 ^ (n бит-1) - 1. – mythicalcoder 24 May 2015 в 15:05
  • 2
    @Maven: 5.2.4.2.1 - INT_MIN указан как -32767. Не принимайте двух дополнений. – John Bode 24 May 2015 в 18:39

Строгим эквивалентом java int является long int в C.

Редактирование: если определено int32_t, то это эквивалентно с точки зрения точности. long int гарантируют точность java int, потому что это гарантия быть размером не менее 32 бит.

4
ответ дан UmNyobe 17 August 2018 в 09:29
поделиться
  • 1
    -1: В каком смысле они эквивалентны? – Oliver Charlesworth 21 February 2013 в 16:48
  • 2
    вы правы, эквивалент int32_t, если он определен вашим компилятором – UmNyobe 21 February 2013 в 16:58

В C целое число (для 32-разрядной машины) равно 32 бит и оно варьируется от -32768 до +32767.

Неверно. 32-разрядное целое число со знаком в представлении комплемента 2 имеет диапазон от -231 до 231-1, который равен -2147,483,648 до 2,147,483,647.

65
ответ дан unwind 17 August 2018 в 09:29
поделиться
  • 1
    Я исправил ваше возведение в степень, ** даже не C, и на мой взгляд это не очень понятно. :) – unwind 21 February 2013 в 17:00
  • 2
    Выглядит лучше, спасибо! Полагаю, слишком много Python. Я избегаю ^, так как обычно xor – Kos 21 February 2013 в 17:01
  • 3
    Я считаю, что моя точка зрения состоит в том, что, поскольку C не имеет оператора экспоненциальности, я не думаю, что конкретная часть должна быть отформатирована как код вообще. :) – unwind 21 February 2013 в 17:03
Другие вопросы по тегам:

Похожие вопросы: