这是非常简单的代码,
#include <iostream>
using namespace std;
int main() {
unsigned int u=10;
int i;
int count=0;
for (i=-1;i<=u;i++){
count++;
}
cout<<count<<"\n";
return 0;
}
Run Code Online (Sandbox Code Playgroud)
count的值是0.为什么?
我试图将unsigned int与这样的signed char进行比较:
int main(){
unsigned int x = 9;
signed char y = -1;
x < y ? printf("s") : printf("g");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我期待o/p为"g".相反,它的"s".这里进行了什么样的转换?
可能重复:
对C宏扩展和整数运算感到困惑
一个谜语(在C中)
以下C程序的输出是打印数组中的元素.但是当实际运行时,它不会这样做.
#include<stdio.h>
#define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};
int main()
{
int d;
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d\n",array[d+1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?