我很难使无线电闹钟按预期工作,并且在这里我已经阅读了很多有关该主题的主题,但是很遗憾,没有一个主题对我有帮助。
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
Intent intent = new Intent(this, AlarmReceiver.class);
PendingIntent penInt = PendingIntent.getBroadcast(this, intentId, intent, 0);
Run Code Online (Sandbox Code Playgroud)
我在stackoverflow上找到的API级别之间的这种区分方法,将其放入我的calcNextAlarm()函数中(加上一些调试日志消息),无论设备上使用什么API,都可以正确设置警报:
// problems in doze mode api 23+
if (Build.VERSION.SDK_INT >= 23) {
if (testMode) Log.d("Ben", "setAlarmClock() - API 23+");
am.setAlarmClock(new AlarmManager.AlarmClockInfo(alarmTimeInMillis, penInt), penInt);
}
else if (Build.VERSION.SDK_INT >= 19) {
// Wakes up the device in Idle Mode
if (testMode) Log.d("Ben", "setExact() - API >= 19 && API < 23");
am.setExact(AlarmManager.RTC_WAKEUP, alarmTimeInMillis, penInt);
}
// Old APIs
else …Run Code Online (Sandbox Code Playgroud) 我用 C 编写了一个程序来打印浮点数的位模式。
所以我期望收到一个标准 IEEE-754 位模式,即: 1 个符号位 | 8 EXP 位 | 23 个尾数位
当我得到输出并将结果输入 IEEE-754 转换器时,数字是错误的。当我一点点颠倒顺序时,数字是正确的。
所以我问的原因是:我发现了一个线程,其中我了解到该模式可以按字节反转,但我没有发现它完全按位反转。
有人可以澄清一下吗?
这是程序、输出和转换结果的屏幕截图。(如您所见,我以相反的顺序将数字放入转换器中,结果对我来说看起来不错。)
我一直在研究这段简单的代码1.5小时,但没有发现错误.我开始疯了;)
你们这些有着清新头脑和观点的人能给我一点暗示,我可能会犯错吗?(我对C比较新)
问题是:代码适用于我输入和测试的大多数数字,但我偶然发现了一个不起作用的数字:3486118(或55777888,它是它的倍数)它适用于第一个循环但是在因子2之后它变成了无限循环.
这是我的代码:(非常感谢任何帮助)
// Program calculates prime factors of entered number and returns them
#include <stdio.h>
int main() {
long int num, num_cp;
long int product=1;
/*prime number array up to 100.000*/
long int prime[] = {2, 3, **[...cut out MANY numbers...]** 99971, 99989, 99991};
printf("Please enter a positive integer:\n");
scanf("%li", &num);//55777888 or 3486118 not working... why?
//copy the entered number to keep the original for comparison with "product" and "break;" if equal
num_cp=num;
printf("prime factorization of %li:\n\n", num); …Run Code Online (Sandbox Code Playgroud)