在C中,带括号和不带括号的循环是否处理不同?
发布时间:2020-12-16 10:38:57 所属栏目:百科 来源:网络整理
导读:我在调试器中单步执行一些C/C++UDA代码,例如: for(uint i = threadIdx.x; i 8379; i+=256) sum += d_PartialHistograms[blockIdx.x + i * HISTOGRAM64_BIN_COUNT]; 我完全感到困惑,因为调试器只是一步一步地传递它,尽管输出是正确的.我意识到,当我在我的循
我在调试器中单步执行一些C/C++UDA代码,例如:
for(uint i = threadIdx.x; i < 8379; i+=256) sum += d_PartialHistograms[blockIdx.x + i * HISTOGRAM64_BIN_COUNT]; 我完全感到困惑,因为调试器只是一步一步地传递它,尽管输出是正确的.我意识到,当我在我的循环中放置大括号时,如下面的代码段所示,它在调试器中按预期运行. for(uint i = threadIdx.x; i < 8379; i+=256) { sum += d_PartialHistograms[blockIdx.x + i * HISTOGRAM64_BIN_COUNT]; } 因此,在C或调试器中以不同方式处理的循环是无括号的,或者它可能是CUDA特有的. 谢谢 解决方法
调试器一次执行一个语句.
看一下这个: int sum = 0; /* one assignment statement */ for (int k = 0; k < 10; k++) sum += k; /* one for statement */ 并与此进行比较 int sum = 0; /* one assignment statement */ for (int k = 0; k < 10; k++) { /* for statement with the body in a block of statements */ sum += k; /* assignment statement */ } 在上面的第一个例子中,sum = k是for语句的一个组成部分;在第二个例子中,它是一个完整的声明. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |