sizeof (интервал) на x64?

Основываясь на ответе @GM и обращая внимание на предупреждение @John La Rooy, я смог добавить новую строку, открыв файл в режиме 'a'.

Даже в окна, чтобы избежать проблемы с новой строкой, вы должны объявить его как newline=''.

Теперь вы можете открыть файл в режиме 'a' (без b).

import csv

with open(r'names.csv', 'a', newline='') as csvfile:
    fieldnames = ['This','aNew']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writerow({'This':'is', 'aNew':'Row'})

Я не пытался с обычным автором (без Dict), но я думаю, что все будет хорошо.

43
задан Andrew Hare 17 March 2009 в 06:05
поделиться

6 ответов

Существуют различные 64-разрядные модели данных ; Microsoft использует LP64 для.NET: и длинный с и указатели составляют 64 бита (хотя традиционные указатели C-стиля не существуют.NET). Контрастируйте это с ILP64, где интервал с - также 64 бита.

Таким образом, на всех платформах, int 32 бита, и long 64 бита; Вы видите это на названия базовых типов Система. Int32 и Система. Int64.

39
ответ дан Ðаn 4 August 2019 в 17:37
поделиться

int средства Int32 на языках.NET. Это было сделано для совместимости между 32-и 64-разрядная архитектура.

Вот таблица всех типов в C# и что они отображают на мудрую.NET.

26
ответ дан Ben S 4 August 2019 в 17:37
поделиться

Псевдонимы ключевого слова int System.Int32, который все еще требует 4 байтов, даже на 64-разрядной машине.

50
ответ дан Andrew Hare 4 August 2019 в 17:37
поделиться

Int32 4 байта на x86 и x64. Int64 8 байтов любой случай. Тип C# int является просто псевдонимом для System.Int32. То же под обеими средами выполнения. Единственный тип, который действительно изменяется в зависимости от среды выполнения, IntPtr:

    unsafe
    {
        var size = sizeof(IntPtr); // 4 on x86 bit machines. 8 on x64
    }
17
ответ дан Nerketur Kamachi 4 August 2019 в 17:37
поделиться

Можно думать int указатель или System.IntPtr. Это было бы 8 байтов на x64 и 4 байта на x86. Размер указателя показывает, что у Вас есть 64-разрядные адреса для Вашей памяти. (System.IntPtr.Size == 8 на x64)

значение int - все еще 4 байта, являетесь ли Вы на x86 или x64. То есть то, что int будет всегда соответствовать System.Int32.

13
ответ дан shA.t 4 August 2019 в 17:37
поделиться

Помните int, просто псевдоним компилятора для основного типа Int32. Учитывая, что должно быть очевидно, почему int только 32 бита на платформе на 64 бита.

5
ответ дан Brian Rasmussen 4 August 2019 в 17:37
поделиться
Другие вопросы по тегам:

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