Мне кажется, что лучший по-настоящему кросс-платформенный подход состоял бы в том, чтобы использовать объединение и протестировать битовую схему двойника для проверки NaN.
Я не полностью протестировал это решение, и может быть более эффективный способ работы с битовыми шаблонами, но я думаю, что он должен работать.
#include <stdint.h>
#include <stdio.h>
union NaN
{
uint64_t bits;
double num;
};
int main()
{
//Test if a double is NaN
double d = 0.0 / 0.0;
union NaN n;
n.num = d;
if((n.bits | 0x800FFFFFFFFFFFFF) == 0xFFFFFFFFFFFFFFFF)
{
printf("NaN: %f", d);
}
return 0;
}
Не думаю, что ты можешь. Если вы не хотите реализовать обратный путь в каталогах, возможно, вы застряли с чем-то вроде этого:
Полезный ответ Ансгара Вихерса показывает обходной путь с использованием Get-ChildItem
, что является необходимым при использовании полной только .NET Framework (FullCLR), на котором построен Windows PowerShell .
Напротив, .NET Core v2.1 + - на котором PowerShell Core - делает [ 1115] предлагают решение:
@([System.IO.Directory]::EnumerateFiles(
'C:\Users',
'*.jpg',
[System.IO.EnumerationOptions] @{
IgnoreInaccessible = $true
RecurseSubDirectories = $true
}
)).Count
Обратите внимание, что это эквивалент -ErrorAction Ignore
, а не Continue
(или SilentlyContinue
, поскольку недоступные тихо игнорируются , с нет способа проверить, какие каталоги впоследствии были недоступны.
Решение основано на этой System.IO.Directory.EnumerateFiles()
перегрузке , которая предлагает параметр System.IO.EnumerationOptions
.