Tag: 增加

无法递增解除引用指针的值

我似乎有一个简单程序的问题,该程序应该计算文件中的各种字符类型。 即使文件根本不为空,它也始终打印零。 我认为它与指针有关,可能是错的。 我还想知道在这种情况下是否需要初始化变量? // fun.h void count_char(FILE *f, unsigned *newl, unsigned *let, unsigned *num, unsigned *spec_char); // main.c #include #include “fun.h” int main() { unsigned newline = 0, number = 0, letter = 0, special_character = 0; char path[256]; FILE *f_read; printf(“Insert a file path: “); gets(path); f_read = fopen(path, “r”); if(f_read == NULL) […]

C编程 – K&R示例1.5.2 – 修改后的程序无法按预期运行

我的问题很简单“为什么第10行和第11行的代码无法正常运行?” 我的代码的目的是完全按照原始的K&R代码进行操作,但不计算nc(getchar()==’\ n’)你能请教我吗? 略微修改的K&R代码: /** K&R – 1.5.2 Character Counting **/ #include /* count characters in input; 1st version */ main(){ long nc; nc = 0; while (getchar() != EOF){ if (getchar() != ‘\n’){ ++nc; } } printf(“%ld\n”, nc); } 我使用64位Windows 7,CodeBlocks10.05,GNU GCC编译器。 我目前的进步和理解: 在示例运行中,我键入单词two并按Enter键,等于4个输入,然后按ctrl + Z键输入^Z或EOF字符。 程序然后打印1 。 我期待它打印3 。 我想唯一合乎逻辑的解释是它完全与我的意图相反( 它只计算换行符?)。 事实certificate,如果我输入单词two并按Enter键,则说4次,它打印4 。 […]

C中的此代码是否属于未定义行为类别?

a是一个数组, foo是一个函数, i是一个int 。 a[++i] = foo(a[i-1], a[i]); 上面的代码会有未定义的行为吗? 数组索引++i , i-1和i保证在数组范围内。

C语言中++ val ++和++ * p ++的解释

int val = 5; printf(“%d”,++val++); //gives compilation error : ‘++’ needs l-value int *p = &val; printf(“%d”,++*p++); //no error 有人可以解释这2个案例吗? 谢谢。

带逻辑运算符的混合增量运算符

如果我有这个代码,我有一个关于使用逻辑运算符的前后增量的问题 void main() {int i = – 3 , j = 2 , k = 0 , m ; m=++i||++j&&++k; printf(“%d %d %d %d”,i,j,k,m);} 知道增量和减量运算符的优先级高于&&和|| 所以他们先被执行然后&&高于 表示-2 || 3 && 1,它给出printf的值-2 3 1 1 但是在尝试使用VS2010时我得到的输出是-2 2 0 1 有没有人对此有任何解释? 问候,,

为什么这些构造使用前后增量未定义的行为?

#include int main(void) { int i = 0; i = i++ + ++i; printf(“%d\n”, i); // 3 i = 1; i = (i++); printf(“%d\n”, i); // 2 Should be 1, no ? volatile int u = 0; u = u++ + ++u; printf(“%d\n”, u); // 1 u = 1; u = (u++); printf(“%d\n”, u); // […]