Tag: cast

如何检查以确保在调用atoi()之前有一个整数?

我希望将整数作为命令行参数,但如果用户传递非整数字符串,则会导致堆栈溢出。 确保atoi()成功的标准方法是什么?

是否未定义行为抛弃函数参数的常量?

想象一下,我有这个C函数(以及头文件中的相应原型) void clearstring(const char *data) { char *dst = (char *)data; *dst = 0; } 在上面的代码中是否存在未定义的行为, 将const掉 ,或者它只是一个非常糟糕的编程实践? 假设没有使用const限定对象 char name[] = “pmg”; clearstring(name);

printf函数的问题?

我写了以下程序 #include main() { int i = 2; float c = 4.5; printf(“%d\n”,c); printf(“%f\n”,i); return 0; } 虽然我知道这是错误的做法,当我运行程序时,我得到了答案 0 4.500000 但是当我以这种方式交换printf语句时 #include main() { int i = 2; float c = 4.5; printf(“%f\n”,i); printf(“%d\n”,c); return 0; } 输出是 0.000000 0 我无法理解发生了什么,任何人都会解释我。

将int作为float打印时printf的行为是什么?

我在windows7上使用dev cpp来编译我的代码。 int d = 0x12; char* e = (char*)&d; printf(“%d %d\n”, sizeof (int), sizeof (float)); printf(“%p %p\n”, &d, (float*)&d); printf(“%p %p %p %p %p\n”, &d, &e[0], &e[1], &e[2], &e[3]); printf(” %d | %x | %#1x | %#1x | %#1x |%p\n”, d, e[0], e[1], e[2], e[3], &e[0]); getchar(); 4 4 0028FF40 0028FF40 0028FF40 0028FF40 0028FF41 […]

如何将整数转换为void指针?

在C语言中使用Threads时,我正面临警告 “警告:从不同大小的整数转换为指针” 代码如下 #include #include #include #include void *print(void *id) { int a=10; printf(“My thread id is %ld\n”,pthread_self()); printf(“Thread %d is executing\n”,id); return (void *) 42; } int main() { pthread_t th[5]; int t; int i; int status; void *ret; for(i=0;i%d\n”,(int *)ret); } pthread_exit(NULL); } 任何人都可以解释如何将一个整数传递给接收(void *)作为参数的函数吗?

printf指定float的整数格式字符串

#include int main() { float a = 5; printf(“%d”, a); return 0; } 这给出了输出: 0 为什么输出为零?

在调用toupper(),tolower()等之前,是否需要转换为unsigned char?

不久之前,StackOverflow上有名望的人在评论中写道,在调用std::toupper (和类似的函数)之前,有必要将char -argument转换为unsigned char 。 另一方面,Bjarne Stroustrup没有提到在C ++ – Programming Language中这样做的必要性。 他只是喜欢使用toupper string name = “Niels Stroustrup”; void m3() { string s = name.substr(6,10); // s = “Stroustr up” name.replace(0,5,”nicholas”); // name becomes “nicholas Stroustrup” name[0] = toupper(name[0]); // name becomes “Nicholas Stroustrup” } (引自上述书,第4版。) 该引用表明输入需要表示为unsigned char 。 对我来说,这听起来像每个char都有,因为char和unsigned char具有相同的大小。 那么这个演员是不必要的还是Stroustrup不小心? 编辑: libstdc ++手册提到输入字符必须来自基本源字符集 ,但不会强制转换。 […]