Tag: 类型

在像C这样的编程语言的上下文中,数组数据结构和数组数据类型之间有什么区别?

Wikipedia区分arrays数据结构和arrays数据类型 。 在像C这样的编程语言的上下文中,数组数据结构和数组数据类型之间有什么区别? 这是什么: int array[]={1, 2, 3, 4, 5}; ? 它是arrays数据结构还是arrays数据类型? 为什么?

NSUInteger vs NSInteger,int vs unsigned,以及类似的情况

任何人都有专业知识来解释何时使用NSUInteger以及何时使用NSInteger? 我已经看到Cocoa方法返回NSInteger,即使在返回值始终是无符号的情况下也是如此。 根本原因是什么? 如果我们想要表示负值,NSInteger或int是否严格限制? 从NSObjCRuntime.h: #if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64 typedef long NSInteger; typedef unsigned long NSUInteger; #else typedef int NSInteger; typedef unsigned int NSUInteger; #endif

C:为什么size_t不是C关键字?

sizeof是一个C 关键字 。 它返回名为size_t的类型的大小。 但是, size_t 不是关键字,而是主要在stddef.h定义,也可能是其他C标准头文件。 考虑一种情况,您希望创建一个不包含任何C标准头文件或库的C程序。 (例如,如果你正在创建一个OS内核。)现在,在这样的代码中,可以使用sizeof (它是一个C关键字,因此它是语言的一部分),但它返回的类型( size_t )不可用! 这不是C标准规范中的某种问题吗? 你能澄清一下吗?

为什么指针声明中的星号特定于标识符而不是数据类型?

愚蠢的问题,但试图掌握潜在的机制/哲学来巩固我的理解。 int myInt; // declares a variable of type integer, named myInt. Intuitive. int* myPtr; // declares a variable of type pointer-to-integer. Also intuitive. int myInt2, myInt3; // two more integer variables.. yay!! This makes sense. // so the pattern is [type] [identifier] ; int* myInt4, myInt5; // an int pointer then an integer. Brain […]

没有返回类型定义的main()函数会发出警告

这是我的计划: main() { printf(“hello world\n”); } 编译时我收到此警告: function should return a value 将main()更改为void main() ,警告消失。 为什么会这样?

在C中将ASCII编号转换为ASCII字符

在C中有没有办法将类型为int的ASCII值转换为相应的ASCII字符作为char?

C中的整数或任何其他数据类型的大小是否依赖于底层架构?

#include int main() { int c; return 0; } // on Intel architecture #include int main() { int c; return 0; }// on AMD architecture / *这里我在两台不同的机器上有一个代码,我想知道’是否依赖于机器的数据类型的大小’* /

我可以从C中的变量中检索数据类型吗?

有办法在C中获取数据类型吗? 例如: int foo; if(foo是int) { // 做一点事 } 或类似的东西: if(typeof(foo)== typeof(int)) { // 做一点事 } 提前致谢。

使用ctypes模块访问用C编写的DLL时出错

我有一个DLL,只有一个函数,它有五个双精度数和一个整数: __declspec(dllexport) struct res ITERATE(double z_r,double z_i,double c_r, double c_i, int iterations, double limit) 它返回一个自定义的struct caled res,它由一个三双数组组成: struct res { double arr[3]; }; 要返回值,我这样做: struct res result; /*earlier in the code */ result.arr[0] = z_real; /*Just three random doubles*/ result.arr[1] = z_imag; result.arr[2] = value; return result; 我用MinGW编译它,我试图在python中使用它来做这样的事情: form ctypes import * z = [0.0,0.0] […]

转换为uint64时,int32或32位指针的意外符号扩展

我使用Visual Studio 2010( cl.exe /W4 )将此代码编译为C文件: int main( int argc, char *argv[] ) { unsigned __int64 a = 0x00000000FFFFFFFF; void *orig = (void *)0xFFFFFFFF; unsigned __int64 b = (unsigned __int64)orig; if( a != b ) printf( ” problem\ta: %016I64X\tb: %016I64X\n”, a, b ); return; } 没有警告,结果是: 问题a:00000000FFFFFFFF b:FFFFFFFFFFFFFFFF 我想int orig = (int)0xFFFFFFFF会引起争议,因为我没有指定一个整数的指针。 但结果是一样的。 有人可以向我解释在C标准中它覆盖了orig是从0xFFFFFFFF扩展到0xFFFFFFFFFFFFFFFF的符号吗? 我原以为(unsigned […]