小编toh*_*haz的帖子

作为类成员的灵活数组

海湾合作委员会 G++ 9

这段代码:

   class foo {
     int bar[] = {111, 123};
   };
Run Code Online (Sandbox Code Playgroud)

产生有关灵活数组的初始值设定项的错误。但这一个:

   class foo {
     int bar[2] = {111, 123};
   };
Run Code Online (Sandbox Code Playgroud)

正常编译。有什么解决方法可以不计算我输入的值吗?

c++ flexible-array-member

5
推荐指数
1
解决办法
4389
查看次数

在 C++ 或通用示例中截断整数

有没有一种优雅的方法来截断左方向十进制或基数无关的整数?

例如我有:

unsigned int val1 = 17301;
Run Code Online (Sandbox Code Playgroud)

该算法必须通过一次调用从左侧截断 1 个(十进制)数字,因此对于 val1,4 次调用的结果将是:

truncate_left(17301) returns 7301
truncate_left(7301) returns 301
truncate_left(301) returns 1
truncate_left(1) returns 0
Run Code Online (Sandbox Code Playgroud)

返回值也是整数。c/c++ 解决方案最适合我。任何外部(和/或)数学库都不受欢迎,我对通用方法感兴趣

@ATylor 我丑陋的解决方案是:

unsigned int truncate_left(unsigned int val) {
  unsigned int divider = 1000000000, dec;
  for(unsigned int pow10 = 10; pow10 > 0; pow10--) {
    if(val % divider != val) {
      dec = val / divider;
      printf("dec = %d\n", divider);
      break;
    }
    divider /= 10;
  }
  return val - dec * divider;
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

c c++ algorithm

1
推荐指数
1
解决办法
2900
查看次数

标签 统计

c++ ×2

algorithm ×1

c ×1

flexible-array-member ×1